Извлечение данных из текстового поля

#sql #oracle #substr

#sql #Oracle #substr

Вопрос:

У меня есть поле notetext, в котором будет 2 поля: price и desc

Цена никогда не бывает одинаковой по количеству символов и представлена в текстовом формате
, например: (51445 текстовое описание) или (9801 текстовое описание)

Как мне настроить его для извлечения суммы, а затем отформатировать ее с 2 десятичными знаками?

Я пробовал: LEFT(note_text,CHARINDEX(' ', note_text) - 1) AS Incoming_Cust_Prc но это не работает. Я получаю сообщение об ошибке

ORA-00904 ОСТАВИЛ недопустимый идентификатор

Ответ №1:

Сообщение об ошибке предполагает, что СУБД является Oracle, а не SQL Server, в котором есть такие функции, как LEFT() и CHARINDEX() . Таким образом, используйте функции Oracle как

 SELECT TO_CHAR(SUBSTR(note_text,1,INSTR(note_text,' ')), 'fm999G999D00') AS Incoming_Cust_Prc,
       SUBSTR(note_text,INSTR(note_text,' ') 1,LENGTH(note_text)) AS Incoming_Cust_Desc
  FROM t
  

чтобы получить два отдельных столбца price и description .

Demo