我在SQL表中有一个文本备注字段,如果它是逗号,我需要删除字段中的最后一个字符。
因此,例如,如果我有这些行,我需要从第2行和第4行中删除逗号。
INETSHORTD
1 94
2 85,
3 94, 92
4 89, 99, 32,产出如下:
INETSHORTD
94
85
94, 92
89, 99, 32有什么想法吗?
发布于 2015-07-15 02:54:52
使用REVERSE和STUFF
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
发布于 2020-04-16 09:06:16
下面是一种更优雅、更易读的方法:
SET @string = REPLACE(@string + '<END>', ',<END>', '')如果不能确定最后一个逗号是否出现在字符串中,请使用以下命令:
SET @string = REPLACE(REPLACE(@string + '<END>', ',<END>', ''), '<END>', '')发布于 2015-07-15 02:49:21
如果特定的字符串以左函数和lenght -1结尾,则使用case语句。
Select
CASE
WHEN INETSHORTD LIKE '%,' THEN LEFT(INETSHORTD, LEN(INETSHORTD)-1)
ELSE INETSHORTD
END
From yourtable例琴
https://stackoverflow.com/questions/31420597
复制相似问题