Mysql 8.0.32当我使用like时有数据为什么查不到呢

SQL语句:

SELECT
    b.ID AS BZRID,
    b.ACCOUNT AS BZRDLZH,
    b.NAME AS BZRNAME 
FROM
    (
    SELECT
        ID,
        ACCOUNT,
        NAME,
        FLAG
    FROM
        USER_ORG UNION ALL
    SELECT
        ID,
        ACCOUNT,
        NAME,
        FLAG
    FROM
        USER_ORG_M 
    ) b 
WHERE
    1 = 1 
    AND b.FLAG = '1' 
    AND b.NAME LIKE '%德吉卓嘎%'

结果:

img

我确认是有数据的 当我把 AND b.NAME LIKE '%德吉卓嘎%'这个条件取消后
结果:

img

请问我这是什么问题呢 是因为mysql版本吗

这个不是MySQL版本的问题。应该是你的字符集不匹配,服务端的字符集与客户端字符集不匹配,导致你看到的中文与服务端解析到的中文不一样,所以查不出来。你可以换成字母或数字再查,应该是没问题的。检查一下你的字符集设置。

使用LIKE语句时,需要注意检查以下几点:

1、数据类型是否正确:字符类型数据才能使用LIKE查询
2、查询字符是否匹配:注意查询字符串是否与数据库中的字符串匹配,尤其是大小写、空格、标点等细节
3、编码问题:如果数据库编码与查询字符编码不同,可能导致匹配失败
4、查询条件:请检查其他查询条件是否有影响,例如是否与其他字段的查询条件冲突等

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

8.0.32中使用了union 在where查询中的包含中文就有这个问题
可以参考下面这个
数据库先配置set optimizer_switch="derived_condition_pushdown=off";

https://bugs.mysql.com/bug.php?id=109833