2013年11月27日 星期三

【MS-SQL】 某欄位有 值 有 , 逗號,如何切成兩個欄位,若沒有逗號又該怎麼處理 charindex

DECLARE @A varchar(17)
SET @A = '12341234,9999'
DECLARE @B varchar(17)

--有兩個逗號,一個取前,一個取後面

--取前面
SELECT substring(@A,1,charindex(',',@A)-1)

--取後面
SELECT substring(@A,charindex(',',@A)+1,charindex(',',@A)-1)

因為 該欄位沒有逗號會出現SQL語法錯誤,又應該怎麼處理

用CASE  利用 charindex 先抓 逗號在地幾個位置,位置大於 0
代表有逗號,若沒有逗號,就直接呈現資料

SELECT
CASE WHEN charindex(',',@A) >0
THEN substring(@A,1,charindex(',',@A)-1)
ELSE @A END AS before
,
CASE WHEN charindex(',',@A) >0
THEN substring(@A,charindex(',',@A)+1,LEN(@A))
ELSE @A END AS after


點圖片可以放大