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?
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).
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.)
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
Cela a fonctionné le mieux pour moi.
sélectionnez * dans label_master where regexp_like (text, chr (10));