ここでは、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'