2016-07-13 77 views
1

我想檢查任何一行是否包含「9123456」,並且我的行的值爲「+9123456」,這是一個匹配,另一個案例是我的值是「9123456」,我需要檢查「 +9123456「,這裏是我卡住的地方。Mysql條目包含檢查

我需要檢查兩種方式,如果可能在單個查詢下。這可能嗎 ?

+0

MYSQL支持使用和''的。 –

+0

你可以提供帶有示例數據的表模式作爲更好的例子嗎 –

+0

有很多方法可以做到這一點,到目前爲止已經嘗試過了嗎? – Blank

回答

1

可以使用replace函數從列中去除+(假定+是該列中唯一的一個)。

SELECT number FROM phonenumber WHERE replace(number, '+', '') = 9123456 

演示:http://sqlfiddle.com/#!9/750609/2

或正則表達式:

SELECT number FROM phonenumber WHERE number regexp '^\\+?9123456$' 

演示:http://sqlfiddle.com/#!9/750609/5

+0

太好了,你可以在這裏看看更多的正則表達式,https://regex101.com/r/cA9aK9/1。注意mysql使用'posix',而不是'pcre'。請務必在完成測試後接受答案,http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work。 – chris85

1

另一種方式將鑄造的列和你輸入號碼UNSIGNED INTEGER

SELECT 
    * 
FROM 
    phonenumber 
WHERE CAST(number AS UNSIGNED) = CAST('+9123456' AS UNSIGNED); 

SQL FIDDLE DEMO

更多:

您可以與您column number匹配前添加0到輸入號碼。

SELECT 
* 
FROM phoneNumber WHERE number = '9123456'+0; 

加零(0)到varchar如果varchar包含表示爲字符串有效的數字將其轉換爲數字。否則,結果是0

SQL FIDDLE DEMO

+0

謝謝你的回答....這個工作甚至...喜歡+0解決方案 – bharatkumar