MySQL的LIKE运营商找不到与

时间:2017-11-09 11:09:52

标签: mysql sql-like

这是我的第一个问题,MySQL有一个奇怪的问题: 我在数据库字段中有电话号码'电话' varchar(50)类型utf8mb4_unicode_ci。 Type为varchar,因为数字可以有/或 - 和/或格式的空格。

如果我选择电话号码:

SELECT phone, REPLACE(REPLACE(REPLACE(REPLACE(phone,' ',''),'-',''),'/',''),'.','') FROM [table] WHERE id=405760

输出是: 0151/434 77 588,0151 43477588

因此,当我选择

时,REPLACE部分也能正常工作

但是,使用LIKE运营商搜索这些电话号码后,这个特定的电话号码为015143477588(其他人工作正常):

SELECT *
FROM [table]
WHERE REPLACE(REPLACE(REPLACE(REPLACE(phone,' ',''),'-',''),'/',''),'.','') like '%015143477588%'

如果我使用=而不是LIKE就可以了。

SELECT *
FROM [table]
WHERE REPLACE(REPLACE(REPLACE(REPLACE(phone,' ',''),'-',''),'/',''),'.','') = '015143477588'

如上所述,其他电话号码有效....任何想法?

1 个答案:

答案 0 :(得分:0)

我已经在我的数据库中检查了你的查询它运行正常

SELECT * FROM users WHERE REPLACE( REPLACE( REPLACE( REPLACE( phone, ' ', '' ) , '-', '' ) , '/', '' ) , '.', '' ) LIKE '%015143477588%'

您可以在Collationutf8mb4_unicode_ci更改为utf8_swedish_ci之后检查您的查询