0

在我的表中,我有一列类型nVarcharnText

假设 this 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%'
4

3 回答 3

3

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

于 2013-04-07T19:17:05.257 回答
2

您必须将用户输入标记为应用程序代码中的单独单词(而不是在 sql 中),然后构造查询,例如

SELECT * FROM tbl_name WHERE 
(col_name like '%yyy%') AND (col_name like '%xxx%') AND ...
于 2013-04-07T18:32:56.853 回答
0

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

SELECT * 
FROM tbl_name 
WHERE (col_name like '%xxx yyy%')
   OR (col_name like '%yyy xxx%');
于 2013-04-07T18:33:19.777 回答