добавить запись в SQL на основе последнего символа поля - PullRequest
2 голосов
/ 11 января 2012

У меня есть поле в sql, которое содержит 1 или 0 в конце. Я пытаюсь сделать, если у поля есть 1 в конце, но нет соответствующего 0, я хотел бы добавить эту запись.

3 разных примера

Значение поля

  • Данные1 (я хотел бы добавить еще одну запись, содержащую Данные0)

  • Данные0 (я хотел бы добавить еще одну запись, содержащую Данные1)

  • Data0 и Data1 оба существуют в таблице (ничего не делать)

Ответы [ 2 ]

1 голос
/ 11 января 2012
insert into test(col, another_column_1,...,another_column_n)
select substr(col,1, length(col)-1) ||   --this is the base value
        max(mod(substr(col,length(col),length(col))+1,2)) --this is the termination (0 or 1)
        as col ,
        max(another_column_1),
        ...
        max(another_column_n)
from test
where substr(col,length(col),length(col)) between '0' and '1'
group by substr(col,1, length(col)-1)
having count(*)=1;

Вы можете увидеть тест здесь

Обновлено для Oracle

0 голосов
/ 11 января 2012

Если я правильно понял ваш вопрос, вы можете использовать оператор LIKE.

Вы можете сделать что-то вроде:

(field like '%1' or field like '%0') and not field like '%0%1'

Но, как правило, SQL не подходит для обработки текста,Эта вещь LIKE в значительной степени самая продвинутая функция обработки текста в SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...