Oracleの文字型
文字データ型には char や varchar2 などが存在するが、
それぞれどのように空白が扱われているかを検証。
データ型の検証
テストテーブルを作成
SQL> create table test(col1 char(5),col2 varchar2(5)); 表が作成されました。 SQL> desc test 名前 NULL? 型 ----- -------- ----------- COL1 CHAR(5) COL2 VARCHAR2(5)
データを追加
SQL> insert into test values('XX ','YY '); 1行が作成されました。
※ それぞれ3バイトずつ半角スペースを入れている。
データを確認
SQL> select * from test; COL1 COL2 ----- ----- XX YY
char(5)項目を ‘XX’で抽出(スペース無し)
SQL> select * from test where col1 ='XX'; COL1 COL2 ----- ----- XX YY
char(5)項目を ‘XX ‘条件で抽出(スペース有り)
SQL> select * from test where col1 = 'XX '; COL1 COL2 ----- ----- XX YY
varchar2(5)項目を ‘YY’で抽出(スペース無し)
SQL> select * from test where col2 = 'YY'; レコードが選択されませんでした。
varchar2(5)項目を ‘YY ‘条件で抽出(スペース有り)
SQL> select * from test where col2 = 'YY '; COL1 COL2 ----- ----- XX YY
結果
char は固定長なので where 条件は ‘XX’ でも ‘XX ‘ でも可。
varchar2 は可変長なので ‘YY’ では不可で ‘YY ‘ なら可。