2012-11-20 8 views
10

Ich habe ein Problem mit einer Datei, die aus Daten (im Format Bytes) erstellt wird, die von der Datenbank zurückgegeben werden.
das Problem ist, dass es ein paar Zeilenumbrüche in der Datei gibt.
Ich würde gerne wissen, ob es eine Möglichkeit gibt, eine WHERE-Klausel zu schreiben, um zu prüfen, ob ein Datensatz ein Zeilenvorschub-Zeichen hat?Wie suche neue Zeile Char in Orakel-Tabelle?

Antwort

18

die Funktion CHR Verwendung für den ASCII-Wert suchen :

select * 
from your_table 
where instr(your_text_col, chr(10)) > 0; 

Wenn Sie nach Wagenrücklauf suchen möchten, wäre das chr (13).

4

Sie können so etwas wie schreiben: (. || ist der Verkettungsoperator; CHR(10) ist das zehnte ASCII-Zeichen, das heißt eine neue Zeile)

SELECT id 
    FROM table_name 
WHERE field_name LIKE '%'||CHR(10)||'%' 
; 

+1

Dank. Ich habe einen anderen Weg gefunden: 'select * from label_master where regexp_like (text, chr (10))' – meilechh

5

Je nach Plattform ist ein Zeilenvorschub in der Regel entweder ein CHR(10) (Unix) oder ein CHR(13), gefolgt von einem CHR(10) (Windows). Es gibt andere Optionen für andere esoterische Plattformen, aber 99,999% der Zeit wird es einer von diesen beiden sein.

Sie können die Daten in einer Spalte suchen für eine oder beide Charaktere 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