从包含单独列中数据的列中选择数据

时间:2018-11-29 16:27:28

标签: sql oracle sqlplus

我正在使用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,但这不一定是我想要的。

有人可以指出我正确的方向吗?

4 个答案:

答案 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