- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 Postgres JDBC 时,我遇到了有关字符串查询的问题。以下查询使用 Auqadata Studio 等工具,但不使用代码。
代码如下;
// strSqlStatement is passed from a framework as String like this and executed untouched
strSqlStatement = "SELECT columnA FROM abc.table1 WHERE columnB= '%KLMN%' limit 1;";
...
strDBUrl = "jdbc:postgresql://x.x.x.x:1234/instance?useUnicode=yes&characterEncoding=UTF-8";
...
rs = st.executeQuery(strSqlStatement);
在 Postgres 数据库中,列 B 的记录为;
... ColumnA ... ColumnB ... ColumnC
------- ------- -------
value1 | TEST_AA_KLMN_BB_S | 25
value2 | TEST2_AA_KLMN_BB_S | 79
value3 | TEST3_AA_KLMN_BB_S | 124
问题是这样的,通常使用 WHERE 子句作为 ColumnB = 'TEST2_AA_KLMN_BB_S'
查询 value2 应该有效,但这个简单的查询无效。同样 LIKE 子句作为 ColumnB LIKE '%KLMN%'
根本不起作用。
WHERE子句使用ColumnC等其他列没有问题。
我已经检查过我们的 Postgres 数据库没有语言环境设置(lc_ctype=C)并且数据库的编码是 UTF-8(server_encoding=UTF8)。
背景;
编辑:@Francisco Puga,我错误地写了 WHERE columnB= '%KLMN%'
问题,在实际代码中它是正确的 WHERE columnB LIKE '%KLMN%'
,不过谢谢感谢您的快速回复。
我已经缩小了问题范围。我发现 =
和 LIKE
确实有效,但字符串存在限制问题。
如果比较的字符串短于 25 个字符,一切都很好,但是当比较的字符串长于 25 个字符时,结果为空。实际上 25 个字符对我来说没有意义。
最佳答案
不确定这是不是打字错误,但您的 where 子句是:
WHERE columnB= '%KLMN%'
什么时候应该:
WHERE columnB LIKE '%KLMN%'
如果您想忽略大写字母,甚至可以使用 ILIKE
。
还要考虑到,如果您在列名中使用大写字母,则在进行查询时应该在其周围使用双引号(但如果这是问题所在,它应该会抛出错误,而不是空记录集)
SELECT "ColumnA" FROM abc.table1 WHERE "ColumnB" ILIKE '%KLMN%' limit 1;
关于java - 在 WHERE 子句中使用字符串条件查询时,PostgreSQL JDBC 为空结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40396746/
我是一名优秀的程序员,十分优秀!