簡體   English   中英

PL / SQL從電話號碼中刪除不需要的字符

[英]PL/SQL Remove unwanted characters from a phone number

我環顧四周,似乎無法找到這個問題的直接答案。 我對如何做到這一點感到困惑。 我應該使用正則表達式還是有更好的方法來做到這一點?

我有一個程序可以根據電話號碼的開頭和長度來格式化電話號碼。 我希望能夠在格式化之前先清理電話號碼。 所以我的老師丟了一個看起來像這樣的電話號碼

07A3345:6543

我想在格式化之前從電話號碼中刪除A和&。

謝謝

您可以使用translate()進行此操作。 一種方法是明確指出要刪除的內容:

select translate(phone, '0123456789', '0123456789A&')

另一種方法是變得更聰明,只保留數字:

select translate(phone, '0123456789' || translate(phone, 'a0123456789', 'a'), '0123456789')

這將刪除所有非數字字符。

如果您只需要刪除非數字字符,則可以嘗試以下操作:

TRANSLATE(phone,'0123456789'||phone,'0123456789')

這將字符映射09把自己和其他任何字符出現在電話號碼什么 -實際上將其廢棄。

給出您的示例:

DECLARE
  phone VARCHAR(20) := '07A3345&6543';
BEGIN
  DBMS_OUTPUT.PUT_LINE(TRANSLATE(phone,'0123456789'||phone,'0123456789'));
END

將顯示:

0733456543

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM