首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

case when else

2013-03-01 
求助 case when elseCREATE PROC TT (@OTF_OTFTNAME VARCHAR(100))AS BEGINSELECT CASE WHEN ltrim(rtrim(

求助 case when else
CREATE PROC TT (@OTF_OTFTNAME VARCHAR(100))
AS 
BEGIN
SELECT 
CASE WHEN ltrim(rtrim(@OTF_OTFTNAME)) like '% %'
 THEN upper(left(@OTF_OTFTNAME,1)+ left(ltrim(stuff(@OTF_OTFTNAME,1,charindex(' ',@OTF_OTFTNAME),'')),1 ) )+'_ID'
 
 WHEN ltrim(rtrim(@OTF_OTFTNAME)) like '%_%'
 THEN upper(left(@OTF_OTFTNAME,1)+ left(ltrim(stuff(@OTF_OTFTNAME,1,charindex('_',@OTF_OTFTNAME),'')),1 ) )+'_ID'
 
 ELSE Upper(left(@OTF_OTFTNAME ,2) ) END
      
END

EXEC TT @OTF_OTFTNAME='CHINA'
当有空格和下划线时都正常,当输入CHINA时应该显示CH_ID的,不知道为什么却显示CC_ID。
[解决办法]
因为下划线在SQL属于其自己属性,如需要此处理,要加入[] 即可。

CREATE PROC TT (@OTF_OTFTNAME VARCHAR(100))
AS 
BEGIN
SELECT 
CASE WHEN ltrim(rtrim(@OTF_OTFTNAME)) like '% %'
 THEN upper(left(@OTF_OTFTNAME,1)+ left(ltrim(stuff(@OTF_OTFTNAME,1,charindex(' ',@OTF_OTFTNAME),'')),1 ) )+'_ID'
 
 WHEN ltrim(rtrim(@OTF_OTFTNAME)) like '%[_]%'
 THEN upper(left(@OTF_OTFTNAME,1)+ left(ltrim(stuff(@OTF_OTFTNAME,1,charindex('_',@OTF_OTFTNAME),'')),1 ) )+'_ID'
 
 ELSE Upper(left(@OTF_OTFTNAME ,2) ) END
      
END

EXEC TT @OTF_OTFTNAME='CHINA'

热点排行
Bad Request.