选择多个值的字段

时间:2014-08-11 11:51:40

标签: sql sqlite

我目前正在尝试创建一个查询,如果一个字段包含多个值,我想要选择行。我想生病只是举个例子:

数据库:field =" Ground; Lava; Rocks"

查询应该是:选择字段包含的位置"地面"和" Rocks"。

我的第一次尝试是:

SELECT * FROM TerrainLayer WHERE tags LIKE '%Ground%' AND tags LIKE '%Rocks%';

这是一个可接受的解决方案还是更好(更有效)的方法来实现这一目标?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这样的事情也应该有用,如果你有多个LIKE子句应该更高效:

SQL

CREATE TABLE #SearchItem (Search varchar(255))

INSERT INTO #SearchItem VALUES
('Ground'),
('Rocks'),
('Whatever')

SELECT *
FROM TerrainLayer as t
JOIN #SearchItem as s
ON t.tags COLLATE DATABASE_DEFAULT LIKE '% ' + s.Search + ' %'

对于SQLite

CREATE TABLE SearchItem (Search  varchar(255))

INSERT INTO SearchItem VALUES
('Ground'),
('Rocks'),
('Whatever')

SELECT *
FROM TerrainLayer as t
JOIN #SearchItem as s
ON t.tags LIKE '% ' + s.Search + ' %'

根据我的测试,这样的JOIN会更快。显然,您不需要像这样手动填充#SearchItem表。

答案 1 :(得分:1)

试试这个:

SELECT * FROM TerrainLayer WHERE tags LIKE '%Ground%Rocks%';