如何仅当列值的最后一个字符为逗号时删除该末尾字符?
解决仅删除末尾为逗号的列值字符问题
当然可以实现这种精准的处理!你提到的left(columnx,-1)会无条件删除最后一个字符,咱们换个思路,用条件判断来只处理末尾确实是逗号的情况。
通用SQL解决方案
这里用CASE结合字符串截取函数来实现:
SELECT CASE WHEN RIGHT(columnx, 1) = ',' THEN LEFT(columnx, LENGTH(columnx) - 1) ELSE columnx END AS cleaned_columnx FROM myTable;
语句说明
RIGHT(columnx, 1):提取columnx字段的最后一个字符,用来判断是否为逗号- 如果判断成立(末尾是逗号),就用
LEFT(columnx, LENGTH(columnx)-1)截取掉最后一个字符的部分 - 如果不成立,直接返回原字段值,保证非逗号结尾的内容不受影响
拿你的示例来说:
示例输入:
10,23,、11
经过上面的SQL处理后,输出就是10,23、11,完全符合你的预期。
针对不同数据库的小调整
如果是用SQL Server的话,字符串长度函数是LEN而不是LENGTH,对应的语句改成:
SELECT CASE WHEN RIGHT(columnx, 1) = ',' THEN LEFT(columnx, LEN(columnx) - 1) ELSE columnx END AS cleaned_columnx FROM myTable;
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

