日期:2014-05-17  浏览次数:20492 次

要怎样简化一下很多not like的语句?
select * from table where 城市 not like '%广东%' and 城市 not like '%上海%' and 城市 not like '%北京%'


我用的是sql server2008,经常会遇到类似的条件判断,要怎样才能简化一下?
------解决方案--------------------
引用:
Quote: 引用:

试试这句行不行。
select * from table 
where 城市 not like in ('%广东%','%上海%','%北京%')

关键字 'in' 附近有语法错误。


这样呢:
select * 
from table t
inner join
(
select '%广东%' v union all
select '%上海%' union all
select '%北京%'
)vv
 on t.城市 not like vv.v

------解决方案--------------------
把这些not like的放到一个表,然后关联
------解决方案--------------------
引用:
回4楼,这样还算简化嘛?好像更复杂的样子。



看着是有点复杂,但是就像版主的说的,最好还是先把你要比较的字符串,放到一个表里,

然后关联,其实就是和我写的是一样的,这个确实没有太简单的代码
------解决方案--------------------
in的括号里不能有通配符吧
------解决方案--------------------

--try this
select * from table 
where CHARINDEX('广东',城市)<1
AND CHARINDEX('上海',城市)<1 
AND CHARINDEX('北京',城市)<1