【问题标题】:SQL Query in JAVA. LIKE commandJAVA 中的 SQL 查询。喜欢命令
【发布时间】:2013-04-15 07:44:05
【问题描述】:

我有一个连接到 SQL 数据库的 Java 程序。我需要从具有以给定字符串开头的字段的表中检索记录。我启动了这个查询:

SELECT s.DATA
FROM TMT_SOLICITUD s, TMT_TRAMITES t
WHERE s.IDTRAMITE='723'
AND s.IDTRAMITE=t.IDTRAMITE
AND s.DATA LIKE '<?xml *'

我知道没有使用 TMT_TRAMITES 表。我们仍在开发该程序,它将很快使用。忽略那部分。

问题是返回给我的结果集是空的。但是,如果我通过 Access 启动相同的查询,它会返回 4 条记录(这是正确的)。

任何人都知道如何正确使用命令 LIKE,或者它不起作用的原因?

【问题讨论】:

  • Microsoft Access 使用的查询语言仅与 SQL 相似,但由于其所有“扩展”(使用“错误”通配符就是其中之一)而远非“真正的”SQL。如果您从 Access 更改为“真正的” DBMS,请务必阅读您的 DBMS 手册(可能还有关于标准 SQL 的好教程)

标签: java sql sql-like


【解决方案1】:

尝试使用 '%' 而不是 '*': % 允许你匹配任意长度的任意字符串(包括零长度)

WHERE EMP_name like 'Hew%';

WHERE EMP_name like '%Hew';

WHERE EMP_name like '%Hew%';

【讨论】:

    【解决方案2】:

    我已经遇到过这种问题。

    Access SQL 对 Like 命令使用的通配符与标准 SQL 不同。

    当您使用库通过 java 访问您的数据库时,请尝试替换您的

    AND s.DATA LIKE '*'
    

    AND s.DATA LIKE '%'
    

    AS '%' 是获取任何字符串的标准通配符。

    【讨论】:

      【解决方案3】:

      我会尝试使用 % 而不是 *。您可以将它放在查询字符串中的任何位置,并根据需要多次使用它。但是,我看不出只使用通配符而不使用任何其他数据来缩小范围有什么意义——它不会很有用。除非您想匹配实际的星号(我可能误会您的意图),否则请使用 %*%

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-30
        • 1970-01-01
        • 2012-12-23
        • 2012-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多