Php Mysql条目包含检查

Php Mysql条目包含检查,php,mysql,mysqli,Php,Mysql,Mysqli,我想检查是否有任何一行包含“9123456”,并且我有一个值为“+9123456”的行,这是一个匹配项,另一种情况是我的值为“9123456”,我需要检查“+9123456”,这就是我被卡住的地方 如果可能的话,我需要在单个查询下检查两种方法。这可能吗?您可以使用replace功能从列中删除+(假定+是该列中唯一的一个) 演示: 或正则表达式: SELECT number FROM phonenumber WHERE number regexp '^\\+?9123456$' 演示:另一种方法

我想检查是否有任何一行包含“9123456”,并且我有一个值为“+9123456”的行,这是一个匹配项,另一种情况是我的值为“9123456”,我需要检查“+9123456”,这就是我被卡住的地方


如果可能的话,我需要在单个查询下检查两种方法。这可能吗?

您可以使用
replace
功能从列中删除
+
(假定
+
是该列中唯一的一个)

演示:

或正则表达式:

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

演示:

另一种方法是将列和输入的数字强制转换为
无符号整数

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

更多信息:

在与您的
列编号匹配之前,您可以将
0
添加到输入编号中

SELECT 
*
FROM phoneNumber WHERE number = '9123456'+0;
如果
varchar
包含表示为字符串的有效数字,则将零(
0
)添加到
varchar
将把它转换为数字。否则结果为
0


MYSQL支持使用
。您可以为表架构提供示例数据作为更好的示例吗?有很多方法可以做到这一点,到目前为止,您尝试了哪些方法?该列的数据类型是什么?很好,您可以在此处查看更多的regex。注意mysql使用的是
posix
,而不是
pcre
。完成测试后,请务必接受答案。
SELECT 
*
FROM phoneNumber WHERE number = '9123456'+0;