SQL搜索列,其中列中的一个项是另一个项的子字符串

时间:2014-09-02 16:45:36

标签: sql

有没有办法让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

3 个答案:

答案 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之前和之后的附加点。