Nous avons une table avec une colonne varchar2(100)
, qui contient parfois des retours chariot et des sauts de ligne. Nous aimerions supprimer ces caractères dans la requête SQL. Nous utilisons:
REPLACE( col_name, CHR(10) )
qui a pas d'effet _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\f\f\fs d'un caractère 'lettre' plus conventionnel, cela prouve que la fonction REPLACE fonctionne autrement. Nous avons également constaté que
REPLACE( col_name, CHR(10), '_' )
trouve le location de la nouvelle ligne, mais insère le trait de soulignement après, plutôt que de le remplacer.
En cours d'exécution sur Oracle8i. La mise à niveau n'est pas une option.
Une autre méthode consiste à utiliser TRANSLATE :
TRANSLATE (col_name, 'x'||CHR(10)||CHR(13), 'x')
Le «x» est un caractère que vous ne voulez pas traduire en null, car TRANSLATE ne fonctionne pas correctement si le troisième paramètre est null.
Ah ah! Cade est sur l'argent.
Un artefact dans TOAD imprime \r\n
en tant que deux caractères "blob" d'espace réservé, mais imprime un seul \r
également en tant que deux espaces réservés. La première étape vers une solution consiste à utiliser ..
REPLACE( col_name, CHR(13) || CHR(10) )
.. mais j'ai opté pour le légèrement plus robuste ..
REPLACE(REPLACE( col_name, CHR(10) ), CHR(13) )
.. qui attrape les personnages fautifs dans n'importe quel ordre. Merci beaucoup à Cade.
M.
Etes-vous sûr que votre nouvelle ligne n'est pas CHR(13) + CHR(10)
, auquel cas vous vous retrouvez avec CHR(13) + '_'
, qui pourrait encore ressembler à une nouvelle ligne?
Essayez REPLACE(col_name, CHR(13) + CHR(10), '')
Si les données de votre base de données proviennent de contrôles HTML TextArea sous forme HTML, différents navigateurs utilisent différents caractères Nouvelle ligne:
Firefox sépare les lignes avec CHR (10) seulement
Internet Explorer sépare les lignes avec CHR (13) + CHR (10)
Apple (pré-OSX) sépare les lignes avec CHR (13) uniquement
Donc, vous aurez peut-être besoin de quelque chose comme:
set col_name = replace(replace(col_name, CHR(13), ''), CHR(10), '')
Je voulais juste laisser tomber une note. J'avais de la difficulté à mettre en forme un champ texte 4000 qui avait son propre esprit et le texte semblerait envelopper (ou non) au hasard dans le rapport. Lorsque j'ai mis à jour la colonne en utilisant le remplacement chr (10) noté ci-dessus. Mon rapport a finalement été formaté comme je le souhaitais. Merci beaucoup!
Si votre caractère de nouvelle ligne est CRLF
, cela signifie qu'il s'agit d'une CHR(13)
suivie de CHR(10)
. Si vous REPLACE(input, CHR(10), '_')
, cela se transforme en CHR(13)
suivi d'un trait de soulignement. Étant donné que CR
peut être aussi bien rendu qu'un caractère de nouvelle ligne, il vous apparaîtra comme si un trait de soulignement avait été inséré après votre nouvelle ligne, mais en fait seulement la moitié votre nouvelle ligne a été remplacée.
Utilisez REPLACE(REPLACE(input, CHR(13)), CHR(10))
pour remplacer tous les CR
's et LF
' s.