【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】V4.3.5社区版本MYSQL模式
【问题描述】在OceanBase中’’ 和 ’ ‘被视为相等?和MySQL行为不一致
【复现路径】select ‘’=’ ’ 或者select 'a ’ = 'a’均返回1;MySQL中返回0
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】V4.3.5社区版本MYSQL模式
【问题描述】在OceanBase中’’ 和 ’ ‘被视为相等?和MySQL行为不一致
【复现路径】select ‘’=’ ’ 或者select 'a ’ = 'a’均返回1;MySQL中返回0
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
在您提到的情况下,OceanBase 和 MySQL 在处理空字符串和包含空格的字符串时存在行为上的差异。这种情况可能是由于OceanBase中特定的字符串比较或处理规则导致的。虽然这不是一个典型的性能或者可用性问题,但它可能会影响应用程序的行为,特别是当应用程序依赖于字符串的精确比较时。
不过,从您的描述来看,这个问题似乎更多地涉及到配置或者数据库的行为特性,而不是一个明显的故障或者异常,因此直接使用 obdiag
来诊断可能不是最有效的方式。但是,如果您希望进一步了解为什么会有这样的行为,可以考虑使用 obdiag
收集一些关于系统配置的信息,以便更好地理解当前环境下的设置。
日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base
通过上述命令收集的集群基础信息可以帮助我们检查系统配置,例如字符集设置、比较方式等,这些都可能影响字符串的比较行为。
为了更好地帮助您解决这一问题,请您提供以下信息:
通过上述信息,我们将能够更准确地定位问题的原因,并提供更具体的解决方案。
附上敏捷诊断工具 obdiag 使用帮助链接
能发一下 截图么?可能字符你发到帖子上 会有转义 不好做判断
上面的截图 是在mysql上操作的 还是在ob上操作的
现在的行为是兼容MySQL 5.7的。
MySQL 5.7
select version();
+------------+
| version() |
+------------+
| 5.7.20-log |
+------------+
1 row in set (0.00 sec)
select ''=' ','a '='a',' a'='a';
+--------+----------+----------+
| ''=' ' | 'a '='a' | ' a'='a' |
+--------+----------+----------+
| 1 | 1 | 0 |
+--------+----------+----------+
1 row in set (0.00 sec)
OB:
> select version();
+----------------------------+
| version() |
+----------------------------+
| 5.7.25-OceanBase-v4.2.1.10 |
+----------------------------+
1 row in set (0.001 sec)
> select ''=' ','a '='a',' a'='a';
+--------+----------+----------+
| ''=' ' | 'a '='a' | ' a'='a' |
+--------+----------+----------+
| 1 | 1 | 0 |
+--------+----------+----------+
1 row in set (0.001 sec)
感觉还是oracle 的语法最靠谱
那这种情况,OceanBase有什么参数能够调整这种行为,能够和8版本的MySQL行为保持一致吗?