假设包含column1
空格分隔的单词,并且您只想匹配整个单词,例如:
SELECT * FROM
(select ' ' + REPLACE(column1,' ',' ') + ' ' as column1 from mytable) t
WHERE
column1 like '% word1 %' AND
column1 like '% word2 %' AND
column1 like '% word3 %' AND
REPLACE(REPLACE(REPLACE(column1,
' word1 ',''),
' word2 ',''),
' word3 ','') = ''
请注意,这种结构确实允许同一个词多次出现。从是否应该允许的问题中不清楚。(小提琴)
如果将这些单词作为单独的行存储在与mytable
. 然后我们可以使用更普通的 SQL 来满足这个查询。您的示例看起来像是某种标记示例。有一个表将每个标签存储为单独的行(如果需要,还记录了序数位置)会将其变成一个简单的关系除法问题。
计算一个单词在一列中出现多少次的一种方法是表达式:
(LEN(column2) - LEN(REPLACE(column2,'word',''))/LEN('word')
但这将再次恢复到匹配较大单词的子序列以及单词本身,而无需更多工作。