sql >> Databáze >  >> RDS >> Oracle

Ořízněte mezery (nový řádek a místo tabulátoru) v řetězci v Oracle

Pokud máte Oracle 10g, REGEXP_REPLACE je docela flexibilní.

Jako test použijte následující řetězec:

chr(9) || 'Q   qwer' || chr(9) || chr(10) ||
chr(13) || 'qwerqwer     qwerty' || chr(9) || 
chr(10) || chr(13)

[[:space:]] odstraní všechny mezery a ([[:cntrl:]])|(^\t) regexp odstraní netisknutelné znaky a tabulátory.

select
    tester,
    regexp_replace(tester, '(^[[:space:]]+)|([[:space:]]+$)',null)
            regexp_tester_1,
    regexp_replace(tester, '(^[[:cntrl:]^\t]+)|([[:cntrl:]^\t]+$)',null) 
            regexp_tester_2
from
    (
    select
        chr(9) || 'Q   qwer' || chr(9) || chr(10) ||
                chr(13) || 'qwerqwer     qwerty' || chr(9) || 
                chr(10) || chr(13) tester 
    from 
        dual
    )

Návrat:

  • REGEXP_TESTER_1 :"Qqwerqwerqwerqwerty "
  • ."
  • REGEXP_TESTER_2 :"Q qwerqwerqwer qwerty "
  • ."

Doufám, že to bude k něčemu užitečné.



  1. Jak Acos() funguje v PostgreSQL

  2. Jak vrátit pole při použití GROUP BY

  3. Převod MySQL na MS Access

  4. Zahraniční klíčové problémy s Apartment gem