【问题标题】:sql query with space in the value值中有空格的sql查询
【发布时间】:2011-02-14 02:00:07
【问题描述】:

值有空格的where子句怎么写:

其实我用的是openJPA,我必须设置参数。 我将设置的值有一个空格,例如: String somevalue="firstname lastname"; query.setparameter(somevalue);

我这样做了,但没有用。任何建议将不胜感激。谢谢。

【问题讨论】:

  • 你的桌子是什么样子的?
  • 查看您输入的名称是否带有撇号。如果是这样,您需要使用双撇号将它们转义:SELECT * FROM table1 WHERE name = 'Miles O''Brien'; 此外,如果您需要进行模式匹配(例如,如果有杂散空格)而不是完全匹配,请查看 LIKE 关键字。
  • 请不要更改问题的全部内容,因为这样任何现有的答案都没有意义。相反,只需添加说明即可。
  • 我是否建议参数化查询而不是连接字符串来创建动态查询也可能有助于解决此类问题。

标签: java sql orm openjpa


【解决方案1】:

应该可以。引号内的空格是有效的。可能 lastname 后面有空格,或者 lastname 的大小写不正确。

【讨论】:

  • 其实 query.setParameter(value with space);不工作我需要用 query.setparameter() 做一些特殊的事情吗
【解决方案2】:

这种语法确实有效;您必须输入一个不存在的名称。

sqlite> CREATE TABLE FOO (name TEXT);
sqlite> INSERT INTO FOO VALUES('joe smith');
sqlite> SELECT * FROM FOO WHERE name = 'joe smith';
joe smith

如果这是一次性搜索,您最好尝试the LIKE operator 来查找匹配项:

sqlite> SELECT * FROM FOO WHERE name LIKE '%smith%';
joe smith

【讨论】:

  • 其实 query.setParameter(value with space);不工作我需要用 query.setparameter() 做一些特殊的事情
【解决方案3】:

该查询没有任何问题。

如果它没有返回结果,那是因为您的数据有问题。您是存储为“char”还是“varchar”?如果它是 'char',那么您将需要注意额外的填充字符。

【讨论】:

  • 其实 query.setParameter(value with space);不工作我需要用 query.setparameter() 做一些特殊的事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多