Выбор данных из столбца, который содержит данные из отдельного столбца - PullRequest
0 голосов
/ 29 ноября 2018

Я использую 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 голосов
/ 29 ноября 2018
SELECT * FROM Table Where ItemNumber = '00'+SerialNumber

выдаст вам все записи, где номенклатурный номер - это серийный номер с двумя нулями перед ним.Это то, что вы ищете?

В конце концов вы можете обновить это:

UPDATE Table SET ItemNumber = SerialNumber where ItemNumber = '00'+SerialNumber
0 голосов
/ 29 ноября 2018

Вы используете LIKE '%00%', который найдет 00 в любой позиции.Чтобы найти его в начале, вам нужно установить его на LIKE '00%' с процентами только в конце вашего значения.

0 голосов
/ 29 ноября 2018

это будет работать:

select count(*) from table where regexp_like(itemnumber,'^(00)('||serialnumber||')$');
0 голосов
/ 29 ноября 2018

Быстрая и грязная опция может использовать INSTR:

select * from test
where instr(itemnumber, serialnumber) > 0  -- ITEMNUMBER contains SERIALNUMBER ...
  and itemnumber like '00%';               -- ... and ITEMNUMBER begins with 00
...