2012-11-20 6 views
10

J'ai un problème avec un fichier créé à partir de données (en format d'octets) renvoyées à partir de la base de données.
le problème est qu'il y a quelques nouvelles lignes dans le fichier.
Je voudrais savoir s'il existe un moyen d'écrire une clause where pour vérifier si un enregistrement a un caractère de retour à la ligne?Comment rechercher une nouvelle ligne char dans la table Oracle?

Répondre

18

Utilisation de la fonction CHR pour rechercher la valeur ASCII :

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

Si vous souhaitez rechercher des retours chariot, ce serait chr (13).

4

Vous pouvez écrire quelque chose comme: (. || est l'opérateur de concaténation; CHR(10) est le dixième caractère ASCII, soit un saut de ligne)

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

+1

Merci. J'ai trouvé un autre moyen: 'select * from label_master où regexp_like (text, chr (10))' – meilechh

5

En fonction de la plate-forme, un retour à la ligne sera généralement un CHR(10) (Unix) ou un CHR(13) suivi d'un CHR(10) (Windows). Il y a d'autres options pour d'autres plates-formes plus ésotériques, mais 99,999% du temps, ce sera l'un de ces deux.

Vous pouvez rechercher les données dans une colonne à la recherche d'un ou deux personnages

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 
Questions connexes