我想检查一行是否包含" 9123456"我有价值的排和" + 9123456"这是匹配,另一种情况是我的价值是" 9123456"我需要检查" + 9123456"这就是我被困住的地方。
如果可能,我需要检查两种方式。这可能吗?
答案 0 :(得分:1)
您可以使用replace
功能从列中删除+
(假设+
是该列中唯一的一个)。
SELECT number FROM phonenumber WHERE replace(number, '+', '') = 9123456
演示:http://sqlfiddle.com/#!9/750609/2
或正则表达式:
SELECT number FROM phonenumber WHERE number regexp '^\\+?9123456$'
答案 1 :(得分:1)
另一种方法是将列和输入数字都投射到UNSIGNED INTEGER
。
SELECT
*
FROM
phonenumber
WHERE CAST(number AS UNSIGNED) = CAST('+9123456' AS UNSIGNED);
更多强>
在与0
匹配之前,您可以在输入号码中添加column number
。
SELECT
*
FROM phoneNumber WHERE number = '9123456'+0;
如果0
包含表示为字符串的有效数字,则向varchar
添加零(varchar
)会将其转换为数字。否则结果为0