SQL:删除字符串中的最后一个逗号

时间:2015-07-15 02:40:33

标签: sql sql-server sql-server-2008

我在SQL表中有一个文本备注字段,如果它是逗号,我需要删除字段中的最后一个字符。

因此,例如,如果我有这些行,我需要从第2行和第4行中删除逗号。

  INETSHORTD
  94
  85
  94, 92
  89, 99, 32

输出结果为:

{{1}}

有什么想法吗?

6 个答案:

答案 0 :(得分:4)

如果特定字符串的结尾使用case语句,则使用LEFT函数和lenght获取子字符串 - 1

Select
    CASE
        WHEN INETSHORTD LIKE '%,'  THEN LEFT(INETSHORTD, LEN(INETSHORTD)-1)
        ELSE INETSHORTD
    END
From yourtable

example fiddle

答案 1 :(得分:3)

这是一种更优雅/可读的方式:

SET @string = REPLACE(@string + '<END>', ',<END>', '')

如果不能确定最后一个逗号是否出现在字符串中,请使用以下命令:

SET @string = REPLACE(REPLACE(@string + '<END>', ',<END>', ''), '<END>', '')

答案 2 :(得分:1)

使用CHARINDEX(https://msdn.microsoft.com/en-us/library/ms186323.aspx)AND LEN(https://msdn.microsoft.com/en-us/library/ms190329.aspx)你应该能够这样做:

s

这个SQL小提琴在工作中显示它:http://sqlfiddle.com/#!3/a99c8/7

答案 3 :(得分:1)

使用REVERSESTUFF

SELECT
    REVERSE(
        STUFF(
            REVERSE(LTRIM(RTRIM(INETSHORTD))), 
            1, 
            CASE WHEN SUBSTRING((REVERSE(LTRIM(RTRIM(INETSHORTD)))), 1, 1) = ',' THEN 1 ELSE 0 END, 
            ''
        )
    )
FROM tbl

首先,您希望TRIM您的数据摆脱前导和尾随空格。然后REVERSE它并检查第一个字符是否为,。如果是,请将其删除,否则不执行任何操作。然后REVERSE再次回来。您可以使用STUFF(string, 1, 1, '')删除第一个字符。

SQL Fiddle

答案 4 :(得分:0)

declare @t table (id varchar(20)) 
insert into @t(id)values ('94,'),('85,'),('94, 92'),('89, 99, 32,')

SELECT  REVERSE(SUBSTRING(  REVERSE(id),    PATINDEX('%[A-Za-z0-9]%',REVERSE(id)),
    LEN(id) - (PATINDEX('%[A-Za-z0-9]%',REVERSE(id)) - 1)   ) )     
FROM    @t

答案 5 :(得分:0)

不确定该语法是否在 2015 年可用,但我认为这是一个更优雅的解决方案。

SELECT TRIM(',' from INETSHORTD) FROM TABLE