使用sql删除字符串中的第一个逗号

时间:2015-09-08 05:33:21

标签: sql sql-server-2012

我的字符串:

1  ,QCIM1J25836, QCIM1J27637
2  ,QCIM1J25836, QCIM1J27637, QCIM1J27638

我想删除第一个逗号,但这意味着我的输出将用于

1  QCIM1J25836, QCIM1J27637
2  QCIM1J25836, QCIM1J27637, QCIM1J27638

可能在其他地方不会是逗号...所以请告诉我如何更新所有数据......

4 个答案:

答案 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