检查列中的字符串,但限制某些单词

时间:2013-11-15 06:28:07

标签: sql-server sql-like

我有一个SQL过程,用于检查列中的某个字符串,如

SELECT [text_field] FROM [dbo].[tbl_a] (NOLOCK) WHERE [text_field] LIKE '%search%'

但是,如何限制此查询以显示%search%的结果,而不是searching的结果?

如果我搜索%happy%但不搜索unhappy

,则同样适用于其他方式

4 个答案:

答案 0 :(得分:0)

以下SQL语句选择具有包含“search”模式的Country的所有客户: 为什么你不使用它?:

SELECT [text_field] FROM [dbo].[tbl_a] (NOLOCK) WHERE [text_field] = "search"

了解更多信息 LIKE

修改

SELECT [text_field] FROM [dbo].[tbl_a] (NOLOCK) WHERE [text_field] LIKE '%search%' AND [textfield] NOT LIKE '%unhappy%' 

答案 1 :(得分:0)

为什么不

SELECT [field] FROM [dbo].[TABLE] (NOLOCK) WHERE [field] = "search"

答案 2 :(得分:0)

尝试使用 Contains

SELECT [text_field] FROM [dbo].[tbl_a] WHERE Contains([text_field],'search')

此查询仅在列位于全文索引中时可用。您必须为text-field列分配全文索引。

Here

答案 3 :(得分:0)

我最终使用

SELECT [textfield] FROM [tbl_a] (NOLOCK) WHERE [textfield] like '%[^a-z]search[^a-z]%';

我先查询

WHERE [textfield] like '%search%'

然后我创建一个包含该搜索结果的所有单词的列表 接下来,我循环选定的单词,例如'搜索'但不是'研究'