如何找到未找到INSTR的哪个部分?例如,我的查询在我的结果中返回70002和70001。我现在想做的是找到表中没有的部分。这是一个我无法克服的障碍。我不想在表中看到所有其他orderItem。
在我的场景中,我只想要70000返回。
基本上,我的字符串的哪一部分不在表格中。
感谢所有建议。
SELECT
orderItems
FROM Orders
WHERE
INSTR('70002-70001-70000',orderItems)!=0
答案 0 :(得分:0)
SELECT orderItems
FROM Orders
WHERE orderItems IN ('7001','7002','7003')
SELECT orderItems
FROM Orders
WHERE orderItems NOT IN ('7001','7002','7003')
答案 1 :(得分:0)
我同意Metaphor的回答,IN
声明很可能是更好的方式。但是,如果您想继续使用INSTR
,则只返回缺失的值应该很简单。
如果通过检查INSTR
的返回值是否不等于0来找到确实存在的条目,则缺少的条目是INSTR
返回0的位置。
SELECT
orderItems
FROM Orders
WHERE
INSTR('70002-70001-70000',orderItems)=0
答案 2 :(得分:0)
最好将字符串解析为SecondTable
并使用以下方法获得所需的结果:
select *
from SecondTable
where SecondTable.OrderItems not in(select OrderItems from Orders)
但是如果您需要从字符串中进行选择,请将其分配给变量并修改Orders表中每条记录的变量:
set @str = '70002-70001-70000';
select @str := replace(@str,OrderItems,'')
from Orders;
select replace(@str,'-','') STR;