SELECT语句的序列限制

时间:2013-04-07 18:25:47

标签: sql sql-server

在我的表格中,我有一个nVarcharnText

类型的列

假设此col的值与此'... xxx yyy zzz ...'

类似

我使用SELECT来搜索此列的表

SELECT * FROM tbl_name WHERE col_name like '%xxx yyy%'

由于我不能强迫用户输入带有我的序列的单词,我也想用这个查询给出相同的结果:

SELECT * FROM tbl_name WHERE col_name like '%yyy xxx%'

3 个答案:

答案 0 :(得分:3)

在我看来,您可能想要考虑规范化您的表格。具体来说,如果“yyy xxx”与“xxx yyy”相同,那么您将在一列中存储一个数组(或列表或任何您想要调用的数组),这会破坏第一个正常形式。将其标准化,使每个原子(即“xxx”,“yyy”)分开存储并与原始记录相关联。那么做你想做的事情几乎是微不足道的。

答案 1 :(得分:2)

您必须将用户输入标记为应用程序代码(而不是sql)中的单独单词,然后构建像

这样的查询
SELECT * FROM tbl_name WHERE 
(col_name like '%yyy%') AND (col_name like '%xxx%') AND ...

答案 2 :(得分:0)

您最好的选择是同时使用这两个标准和“或”。

SELECT * 
FROM tbl_name 
WHERE (col_name like '%xxx yyy%')
   OR (col_name like '%yyy xxx%');