Select

  • Автор темы Rina
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Rina

#1
Подскажите, кто может...

Есть таблица протоколов:
NEWF - новые значения полей;
OP_ID - ID оператора, создавшего запись;
DATE - дата создания записи.

в поле NEWF записываются значения из трех полей другой таблицы чере разделитель '^#$'

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

В PLPGSQL есть функция split_part(string text, delimiter text, field integer) - Split string on delimiter and return the given field (counting from one)
пример: split_part( 'abc~@~def~@~ghi', '~@~', 2)
результат: def

в Оракл такой функции, на сколько я знаю, нет.
 
B

Barmutik

#2
Для SQL Server можно воспользоваться функциями SUBSTRING И PATINDEX

Оракла сейчас под рукой нет .. но там 100% есть такие же функции.. может чуть отличающиеся по синтаксису...
 
G

Guest

#3
<!--QuoteBegin-Rina+26:05:2005, 18:31 -->
<span class="vbquote">(Rina @ 26:05:2005, 18:31 )</span><!--QuoteEBegin-->Подскажите, кто может...

Есть таблица протоколов:
NEWF - новые значения полей;
OP_ID - ID оператора, создавшего запись;
DATE - дата создания записи.

в поле NEWF записываются значения из трех полей другой таблицы чере разделитель '^#$'

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

В PLPGSQL есть функция split_part(string text, delimiter text, field integer) - Split string on delimiter and return the given field (counting from one)
пример: split_part( 'abc~@~def~@~ghi', '~@~', 2)
результат: def

в Оракл такой функции, на сколько я знаю, нет.
[snapback]20183" rel="nofollow" target="_blank[/snapback]​
[/quote]

substr + instr
 
1
#4
ИМХО это
>в поле NEWF записываются значения из трех полей другой таблицы чере >разделитель '^#$'
в корне не правильно. Это противоречит идеологии реляционных баз данных.
Поверь мне попаришься ты потом при всевозможных выборках и изменениях данных
Создавай промежуточную таблицу!!!
 
Статус
Закрыто для дальнейших ответов.