表中gcbh字段,例如值为:XDK1243和XDK123-dkfk,如果有‘-’,则取‘-’之前的值XDK123,没有‘-’,则取原值XDK1243
select left(gcbh,case when charindex('-',gcbh)-1>0 then charindex('-',gcbh)-1
when charindex('-',gcbh)-1<=0 then gcbh end)bh from uf_gcxxb
在将varchar值转换成数据类型int时失败
求解(表中有多个字段,不能直接取字符串)
其中的字符串可以换成你的字段名
select SUBSTRING('XDK123-dkfk',1,case when (CHARINDEX('-','XDK123-dkfk')-1)>0 then (CHARINDEX('-','XDK123-dkfk')-1) else (LEN('XDK123-dkfk')) end)
select SUBSTRING('XDK123',1,case when (CHARINDEX('-','XDK123')-1)>0 then (CHARINDEX('-','XDK123')-1) else (LEN('XDK123')) end)
select
case
when charindex('-',a.name)>0 then SUBSTRING(a.name,0,charindex('-',a.name))
else
'XDK1243'
end
from a