Ich habe ein Problem mit einer Datei, die aus Daten (im Byte-Format) erstellt wurde, die von der Datenbank zurückgegeben wurden.
Das Problem besteht darin, dass die Datei einige Zeilenumbrüche enthält.
Ich würde gerne wissen, ob es eine Möglichkeit gibt, eine Where-Klausel zu schreiben, um zu überprüfen, ob ein Datensatz einen Zeilenumbruch enthält.
Suchen Sie mit der CHR-Funktion nach dem Wert für ASCII:
select *
from your_table
where instr(your_text_col, chr(10)) > 0;
Wenn Sie nach Wagenrückläufen suchen möchten, wäre dies chr (13).
Sie können etwas schreiben wie:
SELECT id
FROM table_name
WHERE field_name LIKE '%'||CHR(10)||'%'
;
(||
ist der Verkettungsoperator; CHR(10)
ist das zehnte ASCII - Zeichen, d.h.
Abhängig von der Plattform ist eine Newline im Allgemeinen entweder CHR(10)
(Unix) oder eine CHR(13)
, gefolgt von einer CHR(10)
(Windows). Es gibt andere Optionen für andere esoterische Plattformen, aber in 99,999% der Fälle wird es eine dieser beiden sein.
Sie können die Daten in einer Spalte durchsuchen und nach einem oder beiden Zeichen suchen
SELECT instr( column_name, CHR(10) ) position_of_first_lf,
instr( column_name, CHR(13) || CHR(10) ) position_of_first_cr_lf
FROM table_name
WHERE instr( column_name, CHR(10) ) > 0
Das hat für mich am besten funktioniert.
select * from label_master wo regexp_like (text, chr (10));