是否可以编写一个基于最小匹配条件返回结果的 sql 查询。例如
SELECT *
FROM table
WHERE column <matches 80% of value 'abbey Road'>
基本上,查询应该通过匹配字符串中的 abbey 和 road 来返回包含列值“abbey road”和“abbey mahatma gandhi road”的行
是否可以编写一个基于最小匹配条件返回结果的 sql 查询。例如
SELECT *
FROM table
WHERE column <matches 80% of value 'abbey Road'>
基本上,查询应该通过匹配字符串中的 abbey 和 road 来返回包含列值“abbey road”和“abbey mahatma gandhi road”的行
Select * from TableName
where ColumnName Like ('%'+Replace(@texttosearch,' ','%')+'%')
确保在发送到此查询之前已经修剪了要搜索的文本。上面的查询返回所有包含 abbey road 的字符串的结果,而与那里的位置无关。
您可以将 LIKE 运算符与通配符一起使用。以下查询将按该顺序匹配包含 abbey 和 road 的任何字符串。
SELECT *
FROM TABLE
WHERE COLUMN LIKE '%abbey%road%';
如果字符串中有空格,则可以仅按字符串匹配:
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示例以尝试此查询