我的字符串:
1 ,QCIM1J25836, QCIM1J27637
2 ,QCIM1J25836, QCIM1J27637, QCIM1J27638
我想删除第一个逗号,但这意味着我的输出将用于
1 QCIM1J25836, QCIM1J27637
2 QCIM1J25836, QCIM1J27637, QCIM1J27638
可能在其他地方不会是逗号...所以请告诉我如何更新所有数据......
答案 0 :(得分:2)
在 SQL-Server 中,您可以通过多种方式执行此操作。
您在以下内容中使用STUFF
:
SELECT col1,
STUFF(col2,1,1,'') as [Col Without First Comma]
FROM tbl
WHERE col2 LIKE ',%'
或者您可以使用RIGHT
SELECT col1,
RIGHT(col2,LEN(col2)-1) as [Col Without First Comma]
FROM tbl
WHERE col2 LIKE ',%';
或者您可以使用SUBSTRING
SELECT col1,
SUBSTRING(col2, 2, 255) as [Col Without First Comma]
FROM tbl
WHERE col2 LIKE ',%';
<强>更新强>
根据您的评论,您也可以采用相同的方式更新:
使用SUBSTRING
UPDATE tbl
SET col2 = SUBSTRING(col2, 2, 255)
WHERE col2 LIKE ',%';
或使用RIGHT
UPDATE tbl
SET col2 = RIGHT(col2,LEN(col2)-1)
WHERE col2 LIKE ',%';
或使用STUFF
UPDATE tbl
SET col2 = STUFF(col2,1,1,'')
WHERE col2 LIKE ',%';
答案 1 :(得分:0)
以下查询应该有效:
它将更新列中的所有记录。
UPDATE table
SET col2 = CASE WHEN LEFT(col2 ,1) =',' THEN RIGHT(col2,LEN(col2)-1)
ELSE col2 END
答案 2 :(得分:0)
UPDATE table
SET col2 = case when charindex(',',col2,0) =1 then right(col2, len(col2)-1) else col2 end
答案 3 :(得分:0)
USE [LIB]
CREATE FUNCTION [dbo].[trimChar]
(
@p_string varchar(max),
@p_char varchar(1)
)
RETURNS varchar(max)
AS
BEGIN
declare @l_string varchar(max) = @p_string
-- lets do the front
while SUBSTRING(@l_string,1,1) = @p_char
begin
set @l_string = substring(@l_string,2,len(@l_string))
end
-- lets do the back
set @l_string = reverse(@l_string)
while SUBSTRING(@l_string,1,1) = @p_char
begin
set @l_string = substring(@l_string,2,len(@l_string))
end
set @l_string = reverse(@l_string)
return @l_string
END
GO