2010-04-30 63 views
0

我该如何写where子句,其中的值有空格:SQL查询空间值

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

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

+0

您使用的是什么RDBMS? – 2010-04-30 02:55:03

+0

你的桌子是什么样的? – 2010-04-30 02:55:11

+0

看看你输入的名字是否有撇号。如果是这样,你需要用双撇号来转义它们:'SELECT * FROM table1 WHERE name ='Miles O''Brien';'另外,如果你需要做模式匹配(例如,如果有杂散空间),而不是完全匹配,查看LIKE关键字。 – 2010-04-30 02:57:42

回答

2

这应该工作。引号内的空格是有效的。或许在姓氏后面有空格,或者姓氏的大小写不正确。

+0

其实是query.setParameter(带空格的值);是不是在工作 我需要做一些特殊的事情query.setparameter() – user234194 2010-04-30 03:32:31

1

该语法确实有效;你必须输入一个不存在的名字。

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 
+0

实际上query.setParameter(值与空间);是不是在工作 我需要做一些特殊的事情query.setparameter() – user234194 2010-04-30 03:32:05

0

没有什么不对的查询。

如果没有返回结果,那是因为您的数据有问题。你是以'char'还是'varchar'存储?如果它是'char',那么你会有额外的填充字符在那里观看。

+0

实际上query.setParameter(值与空间);不工作 我需要做一些特殊的事情query.setparameter() – user234194 2010-04-30 03:31:11