sql >> データベース >  >> RDS >> Oracle

REVERSE()関数を使用せずにOracle(11g)SQLで文字列を逆にする方法

    文書化されていないreverse()を回避しようとしている場合 utl_raw.reverse() 機能 代わりに、適切な変換もRAWから:

    select utl_i18n.raw_to_char(
      utl_raw.reverse(
        utl_i18n.string_to_raw('Some string', 'AL32UTF8')), 'AL32UTF8')
    from dual;
    
    UTL_I18N.RAW_TO_CHAR(UTL_RAW.REVERSE(UTL_I18N.STRING_TO_RAW('SOMESTRING','AL32UT
    --------------------------------------------------------------------------------
    gnirts emoS                                                                     
    

    つまり、それは元の値を取っています。 utl_i18n.string_to_raw()を実行する その上で;次に、それをutl_raw.reverse()に渡します。;次に、その結​​果をutl_i18n.raw_to_char()に戻します。 。

    それがマルチバイト文字にどのように対処するのか、またはとにかくそれらに何をしたいのか完全にはわかりません...

    または、@RahulTripathiがリンクしているディスカッション のバリエーション 、文字セット処理なし:

    select utl_raw.cast_to_varchar2(utl_raw.reverse(utl_raw.cast_to_raw('Some string')))
    from dual;
    
    UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.REVERSE(UTL_RAW.CAST_TO_RAW('SOMESTRING')))   
    --------------------------------------------------------------------------------
    gnirts emoS                                                                     
    

    しかし、そのスレッドは、それがシングルバイト文字に対してのみ機能することにも注意しています。



    1. 日付ごとにSQLデータベースからデータを取得しますか?

    2. PostgreSQL複合主キー

    3. Many2ManyJoinTableのカスタムフィールド

    4. セッション変数とMysqlテーブル