【SQLを丁寧に理解する】SQL文の大文字小文字【ORACLEの場合】PART1
こんにちは、EightyEightRiceです。
今日の記事は、【SSQLを丁寧に理解する】SQL文の大文字小文字【ORACLEの場合】PART1です。
データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。
ざっと読み飛ばすだけでも、
「へぇーそうなんだ」
と、思っていただけるような構成を心がけています。
今回は
です。
SQLやPLSQLをみると、大文字と小文字を両方見かけますね。
例えば、
SLECT * FROM DUAL
case when COLUMN_A = 'abc' then ...
などがあり、
極端な例で言えば、こんなのもありますね。
if A = b ThEn ...
実際ORACLEはどのようにSQL文やPLSQLを解釈しているか、
疑問に思うと思います。
これをすっきり理解する為に、以下のルールを覚えましょう。
・SQL文の大文字小文字
「SQL文は実行時にすべて大文字に変換される」
意外と簡単ですね。
実際SQL文は実行時に一部例外を除いて、すべて大文字に変換されます。
よって、先ほどの例は、以下の様に変換されて実行されます。
SELECT * FROM DUAL
➡ SELECT * FROM DUAL /* 変換なし */
case when COLUMN_A = 'abc' then ...
➡ CASE WHEN COLUMN_A = 'abc' THEN ... /* 'abc'は値なので変換されない */
if A = b ThEn ...
➡ IF A = B THEN...
関数名やテーブル名も大文字に変換されます。
trim(columna)
➡ TRIM(COLUMNA)
UPDATE tableA SET...
➡ UPDATE TABLEA SET...
つまり、PLSQLにおいて以下の点に注意が必要です。
DECLARE
intA NUMBER(10);
INTa NUMBER(10);
・
・
BEGIN
・
上記の場合、以下のように変換されます。
intA ➡ INTA
INTa ➡ INTA
宣言での変数名が重複し、コンパイルエラーになってしまいます。
以上、解説でした。