UNICODEの列と文字列リテラルとUNIONするSQL
NCHARやNVARCHAR2の列と文字列リテラルを返す列をUNIONするようなばあい、そのままではエラーになります。
SQL> DESC Table1;
名前 NULL? 型
---------------- -------- ---------------------------
COLUMN1 NCHAR(10)
COLUMN2 NVARCHAR2(30)
SQL> SELECT COLUMN1, COLUMN2
2 FROM Table1
3 UNION
4 SELECT 'あああああ' AS COLUMN1,
5 'いいいいい' AS COLUMN2
6 FROM DUAL;
SELECT COLUMN1, COLUMN2
*
行1でエラーが発生しました。:
ORA-12704: character set mismatch
文字列リテラルは、前に'N'をつけてやると、UNICODEとして記述できますので、同じケースなら以下のようにすると、うまくいきます。
SQL> SELECT COLUMN1, COLUMN2 2 FROM Table1 3 UNION 4 SELECT N'あああああ' AS COLUMN1, 5 N'いいいいい' AS COLUMN2 6 FROM DUAL; COLUMN1 COLUMN2 ---------- ---------- えええええ くくくくく あああああ いいいいい