Trim Whitespaces (New Line and Tab space) in a String in Oracle

前端 未结 14 1059
挽巷
挽巷 2021-01-30 10:29

I need to trim New Line (Chr(13) and Chr(10) and Tab space from the beginning and end of a String) in an Oracle query. I learnt that there is no easy way to trim multiple charac

14条回答
  •  误落风尘
    2021-01-30 11:11

    If you have Oracle 10g, REGEXP_REPLACE is pretty flexible.

    Using the following string as a test:

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

    The [[:space:]] will remove all whitespace, and the ([[:cntrl:]])|(^\t) regexp will remove non-printing characters and tabs.

    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
        )
    

    Returning:

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

    Hope this is of some use.

提交回复
热议问题