polardb这个问题怎么解决?SELECT *
FROM uc_role t1
WHERE
1=1
AND CASE
WHEN '测试' != '' THEN t1.name LIKE '%测试%'
ELSE 1=1
END
AND CASE
WHEN 'I=' != '' THEN t1.name LIKE '%测试%'
ELSE 1=1
END
AND t1.extend_0ne = 'd84311d5280c466f8c7bc58caa02b288'
AND t1.status = 1
ORDER BY gmt_create DESC;
这个问题看起来像是在使用 MySQL 的 LIKE
语句时,没有正确地使用通配符。在 SQL 中,%
是一个通配符,表示任意数量的字符。所以,如果你想匹配任何包含 "测试" 或 "I=" 的字符串,你应该使用 %
作为通配符。
你的查询应该修改为:
SELECT *
FROM uc_role t1
WHERE
1=1
AND CASE
WHEN '测试' != '' THEN t1.name LIKE '%测试%'
ELSE 1=1
END
AND CASE
WHEN 'I=' != '' THEN t1.name LIKE '%I=%'
ELSE 1=1
END
AND t1.extend_0ne = 'd84311d5280c466f8c7bc58caa02b288'
AND t1.status = 1
ORDER BY gmt_create DESC;
注意,我将第二个 LIKE
语句中的 '%测试%'
改为了 '%I=%'
。
这个问题是由于在SQL查询中使用了错误的条件判断导致的。在这个查询中,当'测试'不等于空字符串时,应该使用LIKE '%测试%'
进行模糊匹配,而不是LIKE '%测试%'
。同样,当'I='不等于空字符串时,也应该使用LIKE '%I=%'
进行模糊匹配。以下是修改后的查询:
SELECT *
FROM uc_role t1
WHERE
1=1
AND CASE
WHEN '测试' != '' THEN t1.name LIKE '%测试%'
ELSE 1=1
END
AND CASE
WHEN 'I=' != '' THEN t1.name LIKE '%I=%'
ELSE 1=1
END
AND t1.extend_0ne = 'd84311d5280c466f8c7bc58caa02b288'
AND t1.status = 1
ORDER BY gmt_create DESC;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。