如何在DB2中拆分字符串值?
例如,给定值:
CHG-FFH.
Run Code Online (Sandbox Code Playgroud)
我想拆分破折号( - ),这将产生两个值:
CHG
FFH.
Run Code Online (Sandbox Code Playgroud)
我尝试使用split函数,但它不是DB2中的函数.
任何帮助将不胜感激.
我在实体属性名称中有下划线,当Spring尝试创建JPA存储库实现时,它会导致尝试解析属性名称的异常.
实体:
@Entity
public class Student {
@Id
private String s_id;
private String s_name;
...
}
Run Code Online (Sandbox Code Playgroud)
库:
@Repository
@Transactional
public interface StudentRepository extends CrudRepository<Student, String> {
List<Student> findByS__name(String name);
}
Run Code Online (Sandbox Code Playgroud)
例外:
org.springframework.data.mapping.PropertyReferenceException:
No property s found for type Student
Run Code Online (Sandbox Code Playgroud)
这里说http://docs.spring.io/spring-data/jpa/docs/current/reference/html/
如果您的属性名称包含下划线(例如first_name),则可以使用第二个下划线转义方法名称中的下划线.对于first_name属性,查询方法必须命名为findByFirst__name(...).
我只是按照文件说的那样做,但我仍然有例外.我不想@Query自己写,我需要在我的属性名称下划线,如何解决这个问题?
我使用Spring数据jpa 1.8.0.RELEASE + hibernate 4.3.9.Final
HEXTORAW 是多个 RDBMS 中的一个函数,例如Oracle和LUW 上的 DB2。它接受一个字符或整数输入,并基本上将其转换为十六进制值。
HEXTORAW(1234) = x'1234'
Run Code Online (Sandbox Code Playgroud)
这种类型转换的算法是什么?幕后代码发生了什么?
(这是因为想要在没有 HEXTORAW 函数的 RDBMS 中创建此函数。)
我有一个关于如何在Spring Boot应用程序中处理两个不同数据源的问题。
用例:
我有一个必须一直连接的主存储库(db)(应用程序范围),对此我没有问题,拥有TransactionManager和EntityManager。
第二个数据库连接应仅在请求范围内进行,并具有从httpRequest收集的动态凭据。
数据源均来自PostgreSQL。
那有可能吗?如果是,实现此目标的最佳方法是什么。
感谢帮助。
我在一个包中有一个存储过程,它在同一包中使用三个不同的方法签名定义。它们仅因几个参数而异(每个参数都使用几个默认值调用下一个参数)。为了简洁起见,我在这里过度简化了列列表。我正在调用的过程中有大约 55 个字段。
我使用名为“MapSqlParameterSource”的 Spring 类来定义我提供的字段值:
SqlParameterSource params = new MapSqlParameterSource()
.addValue("pi_session_id", piSessionId)
.addValue("pi_site_id", piSiteId)
.addValue("pi_address_id", piAddressId)
.addValue("po_status_cd", null)
.addValue("po_status_mg", null);
Run Code Online (Sandbox Code Playgroud)
我使用一个简单的 jdbc 调用来定义我想要调用的存储过程:
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("myschema")
.withCatalogName("address_package")
.withProcedureName("p_post_address");
Run Code Online (Sandbox Code Playgroud)
然后我通过以下调用执行该过程:
Map<String, Object> resultsMap = jdbcCall.execute(params);
Run Code Online (Sandbox Code Playgroud)
当我开发这些结果时,我通常会为了好玩而注销结果。
for (String key : resultsMap.keySet()) {
logger.info("p_post_address - Key: " + key + " object: " + resultsMap.get(key));
}
Run Code Online (Sandbox Code Playgroud)
然后我像这样访问输出字段:
String statusMessage = (String) resultsMap.get("po_status_mg");
BigDecimal statsCd = (BigDecimal) resultsMap.get("po_status_cd");
Run Code Online (Sandbox Code Playgroud)
这对于没有超载的程序来说非常有效!然而,当我调用这个特定的过程时,它给了我这个错误:
org.springframework.dao.InvalidDataAccessApiUsageException:无法确定正确的调用签名 - “P_POST_ADDRESS”的多个过程/函数/签名
然后我尝试变得棘手,并准确指定应该使用哪些参数来调用存储过程,以便它可以匹配我想要的重载方法。
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("myschema") …Run Code Online (Sandbox Code Playgroud) 我很困惑是否为DB2中的varchar字段选择255或256的varchar长度.
什么是性能良好的尺寸?从我在谷歌上的搜索看起来255是最好的,因为它等于1个字节.哪个是对的?varchar(255)是需要1个字节还是varchar(256)需要1个字节.
对于类型的SQL Server列
VARCHAR(100)
在插入列之前,我想确保插入的值不大于100. 该数字是指定它可以存储的最大字符数,还是它可以存储的字符数据的字节数?
我问的原因是一些unicode特殊字符使用多个字节.因此,以unicode编码的100个字符串可能占用超过100个字节.
由于varchar是ASCII编码,任何ASCII字符是否可能占用多个字节(可能需要检查字节长度)?
(编辑:根据我对问题的反馈,我看到varchar应该用于ASCII和nvarcharunicode.)
db2 ×2
java ×2
jdbc ×2
oracle ×2
algorithm ×1
c# ×1
datasource ×1
db2-luw ×1
performance ×1
rdbms ×1
split ×1
spring ×1
spring-boot ×1
sql ×1
sql-server ×1
string ×1