为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:win server 2019
【CPU】:
【问题描述】*:
SELECT buildingId FROM BuildingInfo where bdi_path like (SELECT bdi_path FROM BuildingInfo where buildingId=3157)+'%'
表中不存在 buildingId=3157数据,查询并拼接'%'后,导致查询出全表数据了
请问设置null拼接'%'后依然为null
这个sql的逻辑当子查询为null时,sql等价于SELECT buildingId FROM BuildingInfo where bdi_path like '%';
结果确实应该是返回全表数据,如果通过设置可以调整,那就存在查询的逻辑错误了吧?
把百分号移到子查询内部去试试看,类似于
SELECT buildingId FROM BuildingInfo where bdi_path like (SELECT bdi_path +'%' FROM BuildingInfo where buildingId=3157)