这是我的第一个问题,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'
如上所述,其他电话号码有效....任何想法?
答案 0 :(得分:0)
我已经在我的数据库中检查了你的查询它运行正常
SELECT *
FROM users
WHERE REPLACE( REPLACE( REPLACE( REPLACE( phone, ' ', '' ) , '-', '' )
, '/', '' ) , '.', '' )
LIKE '%015143477588%'
您可以在Collation
从utf8mb4_unicode_ci
更改为utf8_swedish_ci
之后检查您的查询