2

是否可以编写一个基于最小匹配条件返回结果的 sql 查询。例如

SELECT * 
FROM table 
WHERE column <matches 80% of value 'abbey Road'>

基本上,查询应该通过匹配字符串中的 abbey 和 road 来返回包含列值“abbey road”和“abbey mahatma gandhi road”的行

4

3 回答 3

4
Select * from TableName 
where ColumnName Like ('%'+Replace(@texttosearch,' ','%')+'%')

确保在发送到此查询之前已经修剪了要搜索的文本。上面的查询返回所有包含 abbey road 的字符串的结果,而与那里的位置无关。

于 2013-08-06T04:19:59.133 回答
3

您可以将 LIKE 运算符与通配符一起使用。以下查询将按该顺序匹配包含 abbey 和 road 的任何字符串。

SELECT *
FROM TABLE
WHERE COLUMN LIKE '%abbey%road%';
于 2013-08-06T04:20:36.150 回答
0

如果字符串中有空格,则可以仅按字符串匹配:

select *
from test1
where col1 like '%' + replace(@text, ' ', '%');

如果你在某个表格中有你的话,你可以这样做:

select t.col1
from test1 as t
    inner join @words as w on t.col1 like '%' + w.word + '%'
group by t.col1
having count(w.word) = (select count(*) from @words)

请参阅sqlfiddle示例以尝试此查询

于 2013-08-06T04:36:11.273 回答