OB 3.2.3版本过滤substr(16位卡号,1,15)>=''没问题,substr(16位卡号,1,15)>='' and substr(16位卡号,1,15)<=''报错

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】 OB
【 使用版本 】3.2.3.3
【问题描述】SELECT * FROM T WHERE substr(16位卡号,1,15)>='731468000000000’没问题,substr(16位卡号,1,15)>=‘731468000000000’ and substr(16位卡号,1,15)<='731469000000000’报错: check the manual that corresponds to your OB version for the right syntax to use near 'and substr(card_no,1,15)<=‘731469000000000’
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

企业版OB建议去咨询一下商业技术支持

1 个赞

去哪里找商业技术支持呢

1 个赞

有点担心ob数据库,居然这种正常的函数都有问题bug啊。

1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;
2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。
OceanBase官网商务咨询

https://www.oceanbase.com/contactus?fromPage=https%3A%2F%2Fwww.oceanbase.com%2Fsoftwarecenter-enterprise&dataSources=softwarecenter-enterprise_footercontact_d2022

会不会是 sql 文本里有中文符号 。看看单引号写的对不对。

sql 用格式化文档提供,如下:

SELECT * FROM T WHERE substr(card_no,1,15)>='731468000000000' ;
SELECT * FROM T WHERE substr(card_no,1,15)>= '731468000000000'  and substr(card_no,1,15)<='731469000000000'

已解决,是空格的问题,用的notepad–编辑器显示空格后,and substr前后的空格不一样,删除空格重新输入以后,就好了。这几天遇到很多这个问题

1 个赞

那这种是数据质量的问题