在工作中,有如下需求.通过case的嵌套解决了此问题!特此记录一下!(我用的是sql server 2005)
在查询的时候,有这样的一个需求
数据库内容如下:
iD description
1 TableClassA.getName()
2 TableClassB.getName(),exception
3 TableClassC,getName()
4 TableClassD,getName().null
我想查询输入以下结果:
iD description
1 TableClassA
2 TableClassB
3 TableClassC
4 TableClassD
及查询的结果是.号或,前的内容
SQL如下
select id,
case
when (CHARINDEX(',',description)>0) and (CHARINDEX('.',description)>0)
then --在这个做了判断,如同时包含.和,则判断.和,那个在前
case
when CHARINDEX(',',description)>CHARINDEX('.',description) then left(description,CHARINDEX('.',description)-1)
when CHARINDEX(',',description)<CHARINDEX('.',description) then left(description,CHARINDEX(',',description)-1)
end
when (CHARINDEX(',',description)>0) then left(description,CHARINDEX(',',description)-1)
when (CHARINDEX('.',description)>0) then left(description,CHARINDEX('.',description)-1)
else description
end
as description
from tablename