我有一個舊的 Phone 表,它有一個長度為 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。
uj5u.com熱心網友回復:
一個可能的選項是TRIM()函式(需要 SQL Server 2017 )。默認情況下,該TRIM()函式從字串的開頭和結尾洗掉空格字符或其他指定字符,因此您需要#在正確的位置(第 1 個和第 10 個)放置一個附加字符(在示例中),然后將其洗掉:
SELECT
REPLACE(
TRIM('0' FROM '#' SUBSTRING(PhoneNo, 1, 10) '#' SUBSTRING(PhoneNo, 11, 5)),
'#',
''
) AS PhoneNo
FROM (VALUES
('19876543210000'),
('198765432100'),
('1987653210'),
('19876543210'),
('198765432100100'),
('19876543'),
('009876543')
) t (PhoneNo)
結果:
PhoneNo
-------------
1987654321
1987654321
1987653210
1987654321
1987654321001
19876543
009876543
uj5u.com熱心網友回復:
你可以使用一個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);
uj5u.com熱心網友回復:
或更短:
SELECT IIF(LEN(PhoneNo) <= 10, PhoneNo, REPLACE(RTRIM(REPLACE(PhoneNo, '0', ' ')), ' ', '0'))
[這是基于拉努的回答]
uj5u.com熱心網友回復:
您可以使用字串函式的組合,LEFT PATINDEX REVERSE如下所示:
SELECT PhoneNo,
Left(PhoneNo,
IIF(Len(PhoneNo)-PATINDEX('%[1-9]%',Reverse(PhoneNo)) 1<=10 Or PhoneNo Like '%[^1-9]%',
10,
Len(PhoneNo)-PATINDEX('%[1-9]%', Reverse(PhoneNo)) 1)) As NewPhoneNo
FROM tblPhone
輸出:
PhoneNo NewPhoneNo
-------------------- --------------------
19876543210000 1987654321
198765432100 1987654321
1987653210 1987653210
19876543210 1987654321
198765432100100 1987654321001
19876543 19876543
009876543 009876543
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/384650.html
標籤:sql sql-server 查询语句
