我正在使用SQL PLUS。
我有一个包含两列的表SERIALNUMBER和ITEMNUMBER。
我正在尝试查找ITEMNUMBER包含SERIALNUMBER,但数据前面还有00的情况。
例如:我有SERIALNUMBER 1234567和ITEMNUMBER 001234567,我正在尝试查找ITEMNUMBER包含SERIALNUMBER但前面也有00的情况。显然,在其他情况下,SERIALNUMBER和ITEMNUMBER完全匹配,这是我试图通过查找不匹配并进行更改的内容来实现的。
我有这样的例子来找到一些例子:
SELECT COUNT(*) from TABLE WHERE ITEMNUMBER LIKE '%00%';
这给了我很多米,里面有00,但这不一定是我想要的。
有人可以指出我正确的方向吗?
答案 0 :(得分:2)
您正在使用LIKE '%00%'
,它将在任何位置找到00。要在开始时找到它,您需要将其设置为LIKE '00%'
,并且百分比仅在值的结尾。
答案 1 :(得分:1)
一个快速且肮脏的选项可能正在使用INSTR
:
select * from test
where instr(itemnumber, serialnumber) > 0 -- ITEMNUMBER contains SERIALNUMBER ...
and itemnumber like '00%'; -- ... and ITEMNUMBER begins with 00
答案 2 :(得分:1)
这将起作用:
select count(*) from table where regexp_like(itemnumber,'^(00)('||serialnumber||')$');
答案 3 :(得分:1)
SELECT * FROM Table Where ItemNumber = '00'+SerialNumber
将为您提供所有记录,其中itemnumber是序列号,其前面有2个零。那是您要找的东西吗?
最终,您可以通过以下方式进行更新:
UPDATE Table SET ItemNumber = SerialNumber where ItemNumber = '00'+SerialNumber