我正在使用SQL Server 2008
我的列中有sql字符串,其中;
分隔值。我如何修剪以下值
当前字符串:
;145615;1676288;178829;
输出:
145615;1676288;178829;
请帮助sql查询修剪字符串
中的第一个;
注意:第一个字符可能是;
,也可能不是;
,如果它是DECLARE
@VAL VARCHAR(1000)
BEGIN
SET @VAL =';13342762;1334273;'
IF(CHARINDEX(';',@VAL,1)=1)
BEGIN
SELECT SUBSTRING(@VAL,2,LEN(@VAL))
END
ELSE
BEGIN
SELECT @VAL
END
END
,那么只有它应该修剪。
编辑:我之前尝试过的内容,虽然经过这么多好的回复后没有意义。
{{1}}
答案 0 :(得分:11)
SELECT CASE WHEN col LIKE ';%'
THEN STUFF(col,1,1,'') ELSE col END
FROM dbo.table;
答案 1 :(得分:6)
只需检查第一个字符,如果匹配,则从第二个字符开始:
SELECT CASE WHEN SUBSTRING(col,1,1) = ';'
THEN SUBSTRING(col,2,LEN(col))
ELSE col
END AS col
答案 2 :(得分:2)
以下是一个例子:
DECLARE @v varchar(10)
SET @v = ';1234'
SELECT
CASE
WHEN LEFT(@v,1) = ';' THEN RIGHT(@v, LEN(@v) - 1)
ELSE @v
END
答案 3 :(得分:2)
@Aaron Bertrand's answer的进一步发展:
SELECT
STUFF(col, 1, PATINDEX(';%', col), '')
FROM ...
PATINDEX
与LIKE
类似,因为它使用模式搜索,但作为一个函数,它还返回第一个匹配的位置。在这种情况下,由于我们专门在字符串的开头查找;
,因此返回的位置将为1(如果找到)或0(如果未找到)。如果为1,则STUFF函数将删除字符串开头的1个字符,如果位置为0,则STUFF将删除0个字符。