将BINARY LOWER/UPPER查询转换为CAST
我用这个查询来找出拼错的用户名:
SELECT * FROM import_bk
WHERE
(
bk_name = BINARY LOWER(bk_name) OR
bk_name = BINARY UPPER(bk_name) OR
bk_name REGEXP '[0-9]'
)
但我总是收到一个警告,说BINARY已被弃用,应该改用CAST。
这是正确的答案吗?
bk_name = CAST(UPPER(bk_name) AS BINARY) OR
bk_name = CAST(UPPER(bk_name) AS BINARY) OR
解决方案
是的。官方文档对这点说得很清楚:
BINARY运算符已被弃用;你应该预期它将在未来版本的MySQL中被移除。请改用CAST(... AS BINARY)。 ... 将字符串表达式转换为二进制字符串,以下写法等价:
CONVERT(expr USING BINARY) CAST(expr AS BINARY) BINARY expr
备选方案
是的,BINARY自 2021年起就已弃用。请使用CAST作为当前标准(CAST (... AS BINARY))。
SELECT *
FROM import_bk
WHERE
(
bk_name = CAST(LOWER(bk_name) AS BINARY) OR
bk_name = CAST(UPPER(bk_name) AS BINARY) OR
bk_name REGEXP '[0-9]'
)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。