0

我必须在 SQLITE 的多个列中搜索单个字符串,但我无法获得结果,我正在使用以下查询进行搜索:

Select * 
From MyTable 
Where (col1 || '--' || col2) like '%abc xyz 123%'

假设我在col1中有'abc' ,在col2中有'xyz 123'

任何帮助。

4

3 回答 3

1

假设我在 col1 中有“abc”,在 col2 中有“xyz 123”。

col1 || '--' || col2是相等'abc--xyz 123'的,所以不会匹配'%abc xyz 123%'

你应该使用

 SELECT * FROM MyTable WHERE col1 || ' ' || col2 LIKE '%abc xyz 123%'

或者

 SELECT * FROM MyTable WHERE col1 || '--' || col2 LIKE '%abc--xyz 123%'

注意:括号不是必需的,因为||它的优先级高于LIKE.

于 2013-11-08T09:27:11.817 回答
0

您的语句的操作数LIKE必须符合条件。如果您正在从这两列中的字段串联中寻找“单个字符串”完全匹配,并且 (col1) 字段具有 'abc' 而 (col2) 字段具有 'xyz 123' ...那么左侧您的操作数LIKE是连接 (col1 || col2),右侧操作数是连接 ('%abc%' || '%xyz 123%'),导致语句:

SELECT * FROM MyTable WHERE (col1 || col2) LIKE '%abc%'||'%xyz 123%';

或者

SELECT * FROM MyTable WHERE (col1 || '--' || col2) LIKE '%abc%'||'--'||'%xyz 123%';

例子:

C:\SQLite3>sqlite3 test
    SQLite version 3.8.1 2013-10-17 12:57:35
    Enter ".help" for instructions
    Enter SQL statements terminated with a ";"
    sqlite> CREATE table MyTable (col1 text, col2 text);
    sqlite> INSERT into MyTable (col1, col2) values ('abc', 'xyz 123');
    sqlite> SELECT * FROM MyTable WHERE (col1 || col2) LIKE '%abc xyz 123%';
    sqlite> SELECT * FROM MyTable WHERE (col1 || col2) LIKE '%abc%' || 'xyz 123%';
    abc|xyz 123
    sqlite> SELECT * FROM MyTable WHERE (col1 ||'--'|| col2) LIKE '%abc xyz 123%';
    sqlite> SELECT * FROM MyTable WHERE (col1 ||'--'|| col2) LIKE '%abc%'||'--'||'%xyz 123%';
    abc|xyz 123
    sqlite>
于 2013-11-08T09:39:57.230 回答
0

正确的答案是我必须像这样修改上面的查询,

Select * From MyTable Where (col1 || ' ' || col2) like '%abc xyz 123%'
于 2013-11-08T12:31:18.223 回答