首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL :删除字符串中的最后逗号

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

Stack Overflow用户
提问于 2015-07-15 02:40:33
回答 6查看 48.2K关注 0票数 6

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

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

代码语言:javascript
复制
  INETSHORTD
1  94
2  85,
3  94, 92
4  89, 99, 32,

产出如下:

代码语言:javascript
复制
  INETSHORTD
  94
  85
  94, 92
  89, 99, 32

有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-07-15 02:54:52

使用REVERSESTUFF

代码语言:javascript
复制
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

票数 8
EN

Stack Overflow用户

发布于 2020-04-16 09:06:16

下面是一种更优雅、更易读的方法:

代码语言:javascript
复制
SET @string = REPLACE(@string + '<END>', ',<END>', '')

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

代码语言:javascript
复制
SET @string = REPLACE(REPLACE(@string + '<END>', ',<END>', ''), '<END>', '')
票数 12
EN

Stack Overflow用户

发布于 2015-07-15 02:49:21

如果特定的字符串以左函数和lenght -1结尾,则使用case语句。

代码语言:javascript
复制
Select
    CASE
        WHEN INETSHORTD LIKE '%,'  THEN LEFT(INETSHORTD, LEN(INETSHORTD)-1)
        ELSE INETSHORTD
    END
From yourtable

例琴

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31420597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档