SQLITE中的多列搜索

时间:2013-11-08 05:29:31

标签: sqlite search

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

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

假设我在 col2 'abc' col2 'xyz 123'

任何帮助。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>

答案 2 :(得分:0)

正确的答案是我必须稍微修改上面的查询,

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