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 '%德吉卓嘎%'
结果:
我确认是有数据的 当我把 AND b.NAME LIKE '%德吉卓嘎%'这个条件取消后
结果:
请问我这是什么问题呢 是因为mysql版本吗
这个不是MySQL版本的问题。应该是你的字符集不匹配,服务端的字符集与客户端字符集不匹配,导致你看到的中文与服务端解析到的中文不一样,所以查不出来。你可以换成字母或数字再查,应该是没问题的。检查一下你的字符集设置。
使用LIKE语句时,需要注意检查以下几点:
1、数据类型是否正确:字符类型数据才能使用LIKE查询
2、查询字符是否匹配:注意查询字符串是否与数据库中的字符串匹配,尤其是大小写、空格、标点等细节
3、编码问题:如果数据库编码与查询字符编码不同,可能导致匹配失败
4、查询条件:请检查其他查询条件是否有影响,例如是否与其他字段的查询条件冲突等
8.0.32中使用了union 在where查询中的包含中文就有这个问题
可以参考下面这个
数据库先配置set optimizer_switch="derived_condition_pushdown=off";