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

Oracleで曜日名の正しいパディングを削除する方法

    Oracle Databaseで、TO_CHAR()を使用する場合 日付から曜日名を返す関数。指定された言語とカレンダーで有効な最長の曜日名よりも短い場合は、曜日名にパディングが追加されます。

    これがデフォルトの動作です。ただし、必要に応じてこれを変更できます。

    このパディングを抑制するには、曜日名のformat要素の前にfmを追加するだけです。 。

    次のコードを実行するとします。

    SELECT 
        TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
    FROM DUAL;

    結果:

    Friday   , 08 March     2030

    日の名前と月の名前に末尾のスペースが追加されていることがわかります。

    fmを使用できます このスペースを抑制するためのフォーマット修飾子:

    SELECT 
        TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
    FROM DUAL;

    結果:

    Friday   , 08 March     2030

    問題は解決しました。

    これには、月の名前の末尾のスペースを抑制するという副次的な利点もあることに注意してください。

    また、日番号の先行ゼロも抑制しました。

    複数のfmを使用できます 抑制したいパディングをより具体的にするための修飾子。各fm 私たちのフォーマットモデルでは、塗りつぶしモードのオンとオフを切り替えます。

    日と月の名前の末尾のスペースを抑制したいが、日番号の先行ゼロを保持したいとします。その場合、次のことができます。

    SELECT 
        TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
    FROM DUAL;

    結果:

    Friday   , 08 March     2030

    3番目のfmを使用した理由 (MONTHの前 )は、2番目のfm 後続のすべてのフォーマット要素のパディングを再度有効にしました。これにより、その月の末尾のスペースが保持されます。

    意味は次のとおりです:

    SELECT 
        TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
    FROM DUAL;

    結果:

    Friday   , 08 March     2030

    この場合、パディングは曜日名から抑制され、日番号、月、年に対して再度有効になりました。

    幸い、fmをいくつでも追加できます 目的の結果を得る必要があるため、修飾子。


    1. SQLServer2019の新機能

    2. postgresqlポートの混乱5433または5432?

    3. MySQLコマンドラインを使用したファイルからのインポートとファイルへのエクスポート

    4. SQLで重複する行を見つける方法は?