小编Jos*_*ull的帖子

如何基于DB2中的分隔符拆分字符串值

如何在DB2中拆分字符串值?

例如,给定值:

CHG-FFH.
Run Code Online (Sandbox Code Playgroud)

我想拆分破折号( - ),这将产生两个值:

CHG 
FFH. 
Run Code Online (Sandbox Code Playgroud)

我尝试使用split函数,但它不是DB2中的函数.

任何帮助将不胜感激.

db2 split

7
推荐指数
3
解决办法
8万
查看次数

Spring Data JPA存储库方法无法识别带下划线的属性名称

我在实体属性名称中有下划线,当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

spring-data-jpa

6
推荐指数
2
解决办法
1万
查看次数

HEXTORAW() 函数如何工作?算法是什么?

HEXTORAW 是多个 RDBMS 中的一个函数,例如OracleLUW 上的 DB2。它接受一个字符或整数输入,并基本上将其转换为十六进制值。

HEXTORAW(1234) = x'1234'
Run Code Online (Sandbox Code Playgroud)

这种类型转换的算法是什么?幕后代码发生了什么?

(这是因为想要在没有 HEXTORAW 函数的 RDBMS 中创建此函数。)

sql oracle algorithm rdbms db2-luw

5
推荐指数
1
解决办法
1万
查看次数

在Spring Boot + Hibernate中将动态数据源作为第二个数据源

我有一个关于如何在Spring Boot应用程序中处理两个不同数据源的问题。

用例:

我有一个必须一直连接的主存储库(db)(应用程序范围),对此我没有问题,拥有TransactionManager和EntityManager。

第二个数据库连接应仅在请求范围内进行,并具有从httpRequest收集的动态凭据。

数据源均来自PostgreSQL。

那有可能吗?如果是,实现此目标的最佳方法是什么。

感谢帮助。

java datasource jdbc spring-boot

5
推荐指数
1
解决办法
5863
查看次数

Spring SimpleJdbcCall Oracle sql/pl - 无法确定正确的调用签名 - 多个过程/函数/签名

我在一个包中有一个存储过程,它在同一包中使用三个不同的方法签名定义。它们仅因几个参数而异(每个参数都使用几个默认值调用下一个参数)。为了简洁起见,我在这里过度简化了列列表。我正在调用的过程中有大约 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)

java oracle spring stored-procedures jdbc

5
推荐指数
0
解决办法
4581
查看次数

DB2 Varchar字段长度

我很困惑是否为DB2中的varchar字段选择255或256的varchar长度.

什么是性能良好的尺寸?从我在谷歌上的搜索看起来255是最好的,因为它等于1个字节.哪个是对的?varchar(255)是需要1个字节还是varchar(256)需要1个字节.

db2 performance

3
推荐指数
1
解决办法
3292
查看次数

Sql Server - VARCHAR长度是否表示最大字符数或字节数?

对于类型的SQL Server列

VARCHAR(100)

在插入列之前,我想确保插入的值不大于100. 该数字是指定它可以存储的最大字符数,还是它可以存储的字符数据的字节数

我问的原因是一些unicode特殊字符使用多个字节.因此,以unicode编码的100个字符串可能占用超过100个字节.

由于varchar是ASCII编码,任何ASCII字符是否可能占用多个字节(可能需要检查字节长度)?

(编辑:根据我对问题的反馈,我看到varchar应该用于ASCII和nvarcharunicode.)

c# sql-server string

1
推荐指数
1
解决办法
535
查看次数