憨厚生

----Java's Slave----
***Java's Host***

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  165 随笔 :: 17 文章 :: 90 评论 :: 0 Trackbacks
     在工作中,有如下需求.通过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

posted on 2009-12-01 16:28 二胡 阅读(885) 评论(0)  编辑  收藏 所属分类: pl/sql

只有注册用户登录后才能发表评论。


网站导航: