2017-08-09 104 views
0

我想要一個sql查詢來獲取ph_no中的無效條目,例如具有文本(az)或特殊字符或不是10位數字的條目或具有特殊字符的10位長條目或文字在其Sql查詢無效條目

I have used the following code 
SELECT PH_NO FROM Table WHERE LENGTH(PH_NO)<=9 
It is only fetching entries which are not 10 digit long but i want entries which are 10 digit long but contains text or special character as well 
+2

那麼到目前爲止你做了什麼? – xmike

+0

記住StackOverflow不是'爲我做這個'網站。請分享您的代碼並針對您的問題提出具體問題。訪問[如何提問](https://stackoverflow.com/help/how-to-ask) – Thomas

回答

0

你可以試試你的where子句中使用正規表示法,你當PH_NO長度小於10時,或長度爲10,而不是在正規表示法:

SELECT PH_NO 
FROM table1 
WHERE LENGTH(PH_NO)<=9 OR 
    (LENGTH(PH_NO)=10 AND PH_NO NOT REGEXP '^[[:digit:]]{10}$') 
+0

差不多。但我不認爲這是什麼OP是 – Strawberry

+0

之後你可能想添加$? '[[:digit:]] + $'如果是小數點。即1.1等等和其他特殊字符。另外不需要測試= 10只是OR NOT正則表達式。任何小於10的值將被第一個條件覆蓋,其餘的爲正則表達式。 IMO。 – Learning

0

該查詢將幫助您實現您提供的具體內容

SELECT PH_NO FROM Table WHERE LENGTH(convert(PH_NO,signed))!=10; 

的CONVER()將返回1或0,如果PH_NO包含任何字符,所以如果你的10位PH_NO將包含比該查詢會給出正確的輸出的任何無效的條目。

+0

嗯我不認爲這將工作在前導零。 '0000000001'。 – Learning

+0

是的,它會工作,因爲沒有電話號碼從0開始。對於給定的字符串''0000000001'它將返回1 –

+0

他沒有提到PH_NO是電話號碼?此外,這不是一般規則。可能會有其他國家的0開頭的區號。 – Learning