我有一个旧的电话桌,它有一个长度为15的PhonoNo列。现在我正在做一个电话号码清理的任务,在10位数后的0。
+----------------+---------------+
| PhoneNo | Desire output |
+----------------+---------------+
|198765432100000 | 1987654321 |
| 198765432100 | 1987654321 |
| 1987653210 | 1987653210 |
| 19876543210 | 1987654321 |
|198765432100100 | 1987654321001 |
| 19876543 | 19876543 |
| 009876543 | 009876543 |
+----------------+---------------+
我正在使用下面的代码,但它对我不起作用。
SELECT PhoneNo, REPLACE(LTRIM(REPLACE(PhoneNo,'0',' ')),' ','0') as NewPhoneNo
FROM tblPhone WITH(NOLOCK)
我正在寻找SQL Server中的解决方案,以便在不创建任何函数的情况下删除尾随的0。
发布于 2021-12-16 09:07:12
可以使用CASE
表达式返回小于或等于10个字符的值,然后使用REPLACE
和RTRIM
移除尾随0:
SELECT CASE WHEN LEN(PhoneNo) <= 10 THEN PhoneNo
ELSE REPLACE(RTRIM(REPLACE(PhoneNo,'0',' ')),' ','0')
END
FROM (VALUES ('198765432100000'),
('198765432100'),
('1987653210'),
('19876543210'),
('198765432100100'),
('19876543'),
('009876543'))V(PhoneNo);
https://stackoverflow.com/questions/70375763
复制相似问题