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

请问在select有关问题(不用存储过程)

2013-01-11 
请教在select问题(不用存储过程)表中有1列,字段内容如下programNameDDDD9443/002_255_1024K-002_255_1024

请教在select问题(不用存储过程)


表中有1列,字段内容如下
programName
DDDD9443/002_255_1024K  ->002_255_1024K
ADE9443/002_255_2048K   ->002_255_2048K
007_255_1024K           ->007_255_1024K

现在需要取"/"右边,如果没有"/"就无需截取(如上所示)



//这是我写的  是有问题的
substring(
programName, 
CHARINDEX('/', programName)-1, 
CHARINDEX('_', programName, CHARINDEX('/', programName)-1)-1-CHARINDEX('/', programName)-1 )

我觉得这个牵涉的if else了,但是执行该语句必须写在程序中(不能用存储过程),不知道如何解决 
[解决办法]
select (case when charindex('/',programName)>0 then 
stuff(programName,1,charindex('/',programName),'') else programName end)programName from tb

[解决办法]


with tb(a) as (
select 'DDDD9443/002_255_1024K' union all   
select 'ADE9443/002_255_2048K' union all   
select '007_255_1024K' ) 
select substring(a,charindex('/',a)+1,len(a)-charindex('/',a))from tb

运行结果
002_255_1024K
002_255_2048K
007_255_1024K
[解决办法]

select left(programName,charindex('/',programName+'/')-1)

热点排行