我是 SQL 新手,并且接受了培訓,使我能夠在 3 月份使用 SSRS,但我們也有一個 oracle 資料庫。
我需要提取可以保存在稱為家庭電話、作業電話或手機的列中的電話號碼,但我只想提取號碼是否以 07 開頭但也限制為 11 位。這里的問題是數字可能在所有或任何 3 列中。
如果數字以 07 以外的任何內容開頭,或者資料有文本,我想用空白替換它。
我看過使用
'''選擇家庭電話、作業電話、手機號碼
來自 DB 家庭電話如 '07'% 作業電話如 '07'% 而移動電話如 '07'%'''
但這如預期的那樣大大減少了資料集。
我已經查看了 replace 和 regexp-replace,但現在還不能完全理解這一點。非常感謝任何幫助,我認為如果不是 11 位手機號碼,我想匯出所有資料只有一個空白。
uj5u.com熱心網友回復:
您應該在查詢中放置 OR 而不是 AND。既然您提到您只想匯出資料,所以我認為查詢是將電話號碼格式化如下:
SELECT
CASE
WHEN SUBSTR(HOME_PHONE, 1, 2) = '07' --START WITH '07'
AND LENGTH(HOME_PHONE) = 11 --11 DIGITS
AND LENGTH(TRIM(TRANSLATE('HOME_PHONE', ' -.0123456789', ' '))) IS NULL --CONTAIN ONLY NUMBER
THEN HOME_PHONE
ELSE '' --RETURN BLANK IF CONDITION NOT MATCHED
END AS HOME_PHONE
FROM DATA_TBL
您可以應用相同的方法來選擇 WORK_PHONE 和 MOBILE_PHONE。
如果這不是您想要的,請提供示例資料和所需的輸出,以便我更容易復制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/489475.html
上一篇:SQLLDR-條件加載(行尾)
