sql-server - 搜索包含另一个字符串中的所有单词的 varchar 字段

标签 sql-server tsql sql-server-2008

尝试执行一个小型存储过程,而无需为此添加自由文本索引 (SQL Server 2008)

基本上,我想查找某个字段包含参数中所有单词的所有记录。

因此,如果在该字段中我有“这是一个测试字段”,并且我的 SP 的参数将是“此测试字段”,它将返回它,就像参数是“此测试字段”时一样。

表很小(4000条记录),负载会很低,所以效率没什么大不了的。现在我能想到的唯一解决方案是用表值函数拆分两个字符串,然后从那里开始。

还有更简单的想法吗?

谢谢!

最佳答案

如果效率不是一个大问题,为什么不使用一些动态 SQL。类似于:

create procedure myproc (@var varchar(100))
as
set @var = '%' + replace(@var, ' ', '%') + '%'
exec ('select * from mytable where myfield like '''+ @var + '''')

关于sql-server - 搜索包含另一个字符串中的所有单词的 varchar 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4215902/

相关文章:

sql-server - 合并两个 SQL Server 数据库

sql-server-2008 - MS SQL 2008,连接 3 个表,按 T1 和 T2 中的列过滤,仅查找 T3 中最小值的平均值

sql - 如何查找 SQL Server 2008 的列中是否只有一个连字符?

sql-server - 删除 SQL Server 2016 中表列的始终生成的标识

sql - 将同一个表中的多行合并到一个表中

sql-server - 在 node.js 中使用带有存储库模式的 SQL Server 和 mongodb

sql - 为一行分配一个从 1 到 X 的数字然后循环 - 在 SQL 中

sql-server - 为什么 SQL 语言使用 IS NULL 或 IS NOT NULL 而不是 = NULL 或 <> NULL?

sql-server - 修剪所有数据库字段

sql - 左外连接不保留左表