有没有办法让sql语句搜索包含多个项目的列字符串是否包含某个项目,但是不包含某个子字符串项目。以下是我正在使用的当前sql语句。
select * from tbltest where platform like '%item%'
platform是可以在字符串中包含多个项目的列字符串。 Item是我在平台字符串中搜索的特定项目。
以下是我所描述的内容以及我要搜索的项目的示例。要在字符串中搜索的项目(这些项目位于下拉列表中供用户选择)。请注意,ASP将被视为ASP.NET的子字符串,如果用户选择在项目的列字符串中搜索ASP,则返回的记录还将包括基于我上面写的sql语句的ASP.NET项目。 / p>
ASP
ASP.NET
PHP
HTML
J2EE
那么有没有办法在SQL语句的where部分添加一个语句来执行我上面描述的内容,或者具体地,基于上面的示例,在不返回ASP.NET项目的情况下搜索ASP项目?
更新: 该解决方案是否也可以解释列字符串同时包含ASP和ASP.NET的情况?
更新2: 这是对我正在寻找的更好的描述。谢谢。 SQL search column where one item in column is substring of another item Update
答案 0 :(得分:1)
如果您想要一个项目被空格包围,您可以将它们添加到列表的任何一侧以及您的术语:
select *
from tbltest
where ' '+platform+' ' like '% item %'
理想情况下,数据不会存储在列表中,因为这种搜索效率不会非常高。
答案 1 :(得分:0)
select *
from tbltest
where (platform like 'item%' or platform like '% item%')
and (platform like '%item' or platform like '%item %')
这样做是检查item
是否被空格,字符串的开头和/或结尾包围。
要求是没有item
的空格并且你总是在空格上分开。
否则你需要另一个字符才能分开。
答案 2 :(得分:0)
我会做这样的事情:
select *
from tbltest
where platform like '%item%'
and platform not like '%item.%' -- searching for ASP
and platform not like '%.item%' -- searching for NET
注意item
之前和之后的附加点。