请教在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)