Sql查询无效条目

问题描述:

我想要一个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

记住*不是'为我做这个'网站。请分享您的代码并针对您的问题提出具体问题。访问[如何提问](https://*.com/help/how-to-ask) – Thomas

你可以试试你的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

该查询将帮助您实现您提供的具体内容

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