2014-09-02 32 views
1

有没有办法让sql语句搜索一个包含多个项目的列字符串是否包含某个项目,但不包含某个子项目的项目。以下是我正在使用的当前sql语句。SQL搜索列,其中一列中的项目是另一个项目的子串

select * from tbltest where platform like '%item%' 

平台是可以在字符串中包含多个项目的列字符串。 Item是我在平台字符串中搜索的特定项目。

以下是我正在描述的内容和我正在搜索的项目的示例。要在字符串中搜索的项目(这些项目位于用户选择的下拉列表中)。请注意,ASP将被视为ASP.NET的子字符串,如果用户选择在项目的列字符串中搜索ASP,则返回的记录还将包括基于上面编写的sql语句的ASP.NET项目。

ASP
ASP.NET
PHP
HTML
J2EE

那么,有没有办法在SQL语句的where部分,会做什么,我描述以上或特别添加一条语句,基于上面的示例,搜索ASP项目而不返回ASP.NET项目?

更新: 该解决方案是否也解释了列字符串同时包含ASP和ASP.NET的情况?

更新2: 这是我所寻找的更好的描述。谢谢。 SQL search column where one item in column is substring of another item Update

回答

1

如果你想要求一个项目由空格所包围,您可以将它们添加在列表的两侧,以及您的期限:

select * 
from tbltest 
where ' '+platform+' ' like '% item %' 

理想的数据没有存储在列表中,因为这样的搜索将不会非常有效。之前和之后item

select * 
from tbltest 
where platform like '%item%' 
and platform not like '%item.%' -- searching for ASP 
and platform not like '%.item%' -- searching for NET 

注意附加点:

0
select * 
from tbltest 
where (platform like 'item%' or platform like '% item%') 
and (platform like '%item' or platform like '%item %') 

这样做是检查是否item由空格,开始和/或字符串的结尾包围。

一个要求是没有item有一个空间,你总是在一个空间分裂。 否则,你需要另一个字符分裂。

0

我会做这样的事情。

+0

和在字符串是't-sql sql'的情况下,我正在搜索'sql'? – Aquillo 2014-09-02 17:34:03

+0

您是否考虑搜索确切的字符串?听起来像你使用通配符导致你现在正在尝试修复的问题。这是SEDE吗?你能链接吗? – Phrancis 2014-09-02 18:12:14

相关问题