在我的表中,我有一列类型nVarchar
或nText
假设 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%'
在我的表中,我有一列类型nVarchar
或nText
假设 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%'
在我看来,您可能需要考虑规范化您的表格。具体来说,如果“yyy xxx”与“xxx yyy”相同,则您将在一个列中存储一个数组(或列表或任何您想调用的名称),这会破坏第一个正常形式。对其进行规范化,以便每个原子(即“xxx”、“yyy”)单独存储并与您的原始记录相关联。那么做你想做的事情几乎是微不足道的。
您必须将用户输入标记为应用程序代码中的单独单词(而不是在 sql 中),然后构造查询,例如
SELECT * FROM tbl_name WHERE
(col_name like '%yyy%') AND (col_name like '%xxx%') AND ...
您最好的选择是同时使用这两个标准和“或”。
SELECT *
FROM tbl_name
WHERE (col_name like '%xxx yyy%')
OR (col_name like '%yyy xxx%');