从包含来自单独列的数据的列中选择数据
Selecting data from a column that contains data from a separate column
我正在使用 SQL PLUS。
我有一个包含两列的 table,SERIALNUMBER 和 ITEMNUMBER。
我试图找到 ITEMNUMBER 包含 SERIALNUMBER,但数据前面也有 00 的情况。
例如:我有 SERIALNUMBER 1234567 和 ITEMNUMBER 001234567,我试图找到 ITEMNUMBER 包含 SERIALNUMBER 但前面也有 00 的情况。显然我还有其他情况,其中 SERIALNUMBER 和 ITEMNUMBER 完全匹配,这就是我试图通过找到不匹配的那些并更改它们来完成的。
我有这样的事情找了几个例子:
SELECT COUNT(*) from TABLE WHERE ITEMNUMBER LIKE '%00%';
这给了我很多带有 00 的仪表,但这不一定是我在这里想要的。
有人能给我指出正确的方向吗?
一个快速而肮脏的选择可能是使用 INSTR
:
select * from test
where instr(itemnumber, serialnumber) > 0 -- ITEMNUMBER contains SERIALNUMBER ...
and itemnumber like '00%'; -- ... and ITEMNUMBER begins with 00
您正在使用 LIKE '%00%'
,它将在任何位置找到 00。要在开头找到它,您需要将其设置为 LIKE '00%'
,百分比仅在您的值的末尾。
这会起作用:
select count(*) from table where regexp_like(itemnumber,'^(00)('||serialnumber||')$');
SELECT * FROM Table Where ItemNumber = '00'+SerialNumber
会给你所有itemnumber是序列号前面有2个零的记录。这就是您要找的吗?
最终您可以通过以下方式更新:
UPDATE Table SET ItemNumber = SerialNumber where ItemNumber = '00'+SerialNumber
我正在使用 SQL PLUS。
我有一个包含两列的 table,SERIALNUMBER 和 ITEMNUMBER。
我试图找到 ITEMNUMBER 包含 SERIALNUMBER,但数据前面也有 00 的情况。
例如:我有 SERIALNUMBER 1234567 和 ITEMNUMBER 001234567,我试图找到 ITEMNUMBER 包含 SERIALNUMBER 但前面也有 00 的情况。显然我还有其他情况,其中 SERIALNUMBER 和 ITEMNUMBER 完全匹配,这就是我试图通过找到不匹配的那些并更改它们来完成的。
我有这样的事情找了几个例子:
SELECT COUNT(*) from TABLE WHERE ITEMNUMBER LIKE '%00%';
这给了我很多带有 00 的仪表,但这不一定是我在这里想要的。
有人能给我指出正确的方向吗?
一个快速而肮脏的选择可能是使用 INSTR
:
select * from test
where instr(itemnumber, serialnumber) > 0 -- ITEMNUMBER contains SERIALNUMBER ...
and itemnumber like '00%'; -- ... and ITEMNUMBER begins with 00
您正在使用 LIKE '%00%'
,它将在任何位置找到 00。要在开头找到它,您需要将其设置为 LIKE '00%'
,百分比仅在您的值的末尾。
这会起作用:
select count(*) from table where regexp_like(itemnumber,'^(00)('||serialnumber||')$');
SELECT * FROM Table Where ItemNumber = '00'+SerialNumber
会给你所有itemnumber是序列号前面有2个零的记录。这就是您要找的吗?
最终您可以通过以下方式更新:
UPDATE Table SET ItemNumber = SerialNumber where ItemNumber = '00'+SerialNumber