Рассмотрим:
UPDATE my_table
SET my_column = REGEXP_REPLACE(my_column , chr(13) || '.*$', '', 1, 0, 'n')
WHERE ACCOUNT = 123456
Обоснование:
chr(13) || '.*'
соответствует от (первой) новой строки до конца строки (ужасно) - соответствующая часть строки будет заменена пустой строкой
- , последняя опция
'n'
позволяет символу точки совпадать на новых строках (по умолчанию это не так)
Демонстрация на DB Fiddle :
WITH a AS (SELECT 'John Smith' || chr(13) || 'John Smith' txt FROM DUAL)
SELECT
a.txt,
REGEXP_REPLACE(a.txt, chr(13) || '.*', '', 1, 0, 'n') new_txt
FROM a;
TXT | NEW_TXT
:-------------------- | :---------
John Smith | John Smith
John Smith |
Примечание: как прокомментировано @ Alex Poole , если вы хотите сопоставить си новую строку и возврат каретки, вы можете использовать:
'('||chr(13)||'|'||chr(10)||').*'