[Oracle] すべての文字が半角・全角であるか確認するSQL文

Pocket

ここでは、Oracleにおいて、ある項目(列)の文字が全て半角または全角文字であるかを確認するSQL文のサンプルを掲載しています。

スポンサーリンク

半角・全角文字であるかを確認する

以下がそのサンプルSQLです。詳細はサンプル内のコメントを参照ください。

-- 全角文字を含むレコードを抽出する(半角文字だけであれば文字数=文字のバイト数を利用)
select 
    length(col_hankaku), lengthb(col_hankaku) 
from 
    test_table
where 
    length(col_hankaku) <> lengthb(col_hankaku)

-- 半角文字を含むレコードを抽出する(全角文字だけであれば文字数×2=文字のバイト数を利用)
select 
    length(col_zenkaku), lengthb(col_zenkaku) 
from 
    test_table
where 
    length(col_zenkaku) * 2 <> lengthb(col_zenkaku)

ただし、上記サンプルSQLは半角文字(半角カナを含む)が1バイト、全角文字が2バイトであることを前提としているため、文字コードがJA16SJIS ( JA16SJISTILDE ) である場合においてのみ利用することができます。

なお、Oracleの文字コードは以下のSQLで確認することができます。

select
    value
from
    NLS_DATABASE_PARAMETERS
where
    PARAMETER='NLS_CHARACTERSET'
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *