如果給定電話號碼中有x ,則截斷后x后不會超過 5 位。
如果電話號碼中沒有x,則截斷后將相同
以下是可能的情況
999-999-9999x1234567890 => 999-999-9999x12345
123-456-9999x123 => 123-456-9999x123 (no change)
999-999-9999 => 999-999-9999 (no change)
123456789 => 123456789 (no change)
999-1234567892 => 999-1234567892 (no change)
如何使用 regexp_substr 或任何其他方法在 oracle SQL 中實作這一點
uj5u.com熱心網友回復:
您可以使用(快速)簡單的字串函式:
SELECT value,
CASE INSTR(value, 'x')
WHEN 0
THEN value
ELSE SUBSTR(value, 1, INSTR(value, 'x') 5)
END AS shortened_value
FROM table_name;
或(較慢的)正則運算式:
SELECT value,
REGEXP_REPLACE(value, '(x.{5}). $', '\1')
AS shortened_value
FROM table_name;
其中,對于樣本資料:
CREATE TABLE table_name (value) AS
SELECT '99-999-9999x1234567890' FROM DUAL UNION ALL
SELECT '123-456-9999x123' FROM DUAL UNION ALL
SELECT '999-999-9999' FROM DUAL UNION ALL
SELECT '123456789' FROM DUAL UNION ALL
SELECT '999-1234567892' FROM DUAL;
兩個輸出:
價值 SHORTENED_VALUE 99-999-9999x1234567890 99-999-9999x12345 123-456-9999x123 123-456-9999x123 999-999-9999 999-999-9999 123456789 123456789 999-1234567892 999-1234567892
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454329.html
上一篇:如何在每個組中選擇最好的專案?
