web-dev-qa-db-fra.com

Comment rechercher un nouveau caractère de ligne dans la table Oracle?

J'ai un problème avec un fichier créé à partir de données (au format octets) renvoyées de la base de données.
le problème est qu’il ya quelques nouvelles lignes dans le fichier.
J'aimerais savoir s’il existe un moyen d’écrire une clause where pour vérifier si certains enregistrements ont un caractère de nouvelle ligne?

11
meilechh

Utilisation de la fonction CHR pour rechercher la valeur ASCII:

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

Si vous voulez rechercher des retours à la ligne, ce serait chr (13).

21
APC

Vous pouvez écrire quelque chose comme:

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

(|| est l'opérateur de concaténation; CHR(10) est le dixième caractère ASCII, c'est-à-dire un saut de ligne.)

5
ruakh

En fonction de la plate-forme, une nouvelle ligne sera généralement une CHR(10) (Unix) ou une CHR(13) suivie d'une CHR(10) (Windows). Il existe d'autres options pour d'autres plateformes plus ésotériques, mais 99,999% du temps, ce sera l'une de ces deux solutions.

Vous pouvez rechercher les données dans une colonne à la recherche d'un ou des deux caractères.

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
5
Justin Cave

Cela a fonctionné le mieux pour moi. 

sélectionnez * dans label_master where regexp_like (text, chr (10)); 

0
Anil