我想檢查任何一行是否包含「9123456」,並且我的行的值爲「+9123456」,這是一個匹配,另一個案例是我的值是「9123456」,我需要檢查「 +9123456「,這裏是我卡住的地方。Mysql條目包含檢查
我需要檢查兩種方式,如果可能在單個查詢下。這可能嗎 ?
我想檢查任何一行是否包含「9123456」,並且我的行的值爲「+9123456」,這是一個匹配,另一個案例是我的值是「9123456」,我需要檢查「 +9123456「,這裏是我卡住的地方。Mysql條目包含檢查
我需要檢查兩種方式,如果可能在單個查詢下。這可能嗎 ?
可以使用replace
函數從列中去除+
(假定+
是該列中唯一的一個)。
SELECT number FROM phonenumber WHERE replace(number, '+', '') = 9123456
演示:http://sqlfiddle.com/#!9/750609/2
或正則表達式:
SELECT number FROM phonenumber WHERE number regexp '^\\+?9123456$'
太好了,你可以在這裏看看更多的正則表達式,https://regex101.com/r/cA9aK9/1。注意mysql使用'posix',而不是'pcre'。請務必在完成測試後接受答案,http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work。 – chris85
另一種方式將鑄造的列和你輸入號碼UNSIGNED INTEGER
。
SELECT
*
FROM
phonenumber
WHERE CAST(number AS UNSIGNED) = CAST('+9123456' AS UNSIGNED);
更多:
您可以與您column number
匹配前添加0
到輸入號碼。
SELECT
*
FROM phoneNumber WHERE number = '9123456'+0;
加零(0
)到varchar
如果varchar
包含表示爲字符串有效的數字將其轉換爲數字。否則,結果是0
謝謝你的回答....這個工作甚至...喜歡+0解決方案 – bharatkumar
MYSQL支持使用和''的。 –
你可以提供帶有示例數據的表模式作爲更好的例子嗎 –
有很多方法可以做到這一點,到目前爲止已經嘗試過了嗎? – Blank