物流・倉庫・WMS・プログラマ日記

物流・倉庫・WMS・プログラマ日記

在庫管理・倉庫管理を扱う事が多いプログラマの備忘録です。

【SQLを丁寧に理解する】SQL文の大文字小文字【ORACLEの場合】PART1

こんにちは、EightyEightRiceです。

 

今日の記事は、【SSQLを丁寧に理解する】SQL文の大文字小文字【ORACLEの場合】PART1です。

データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。

ざっと読み飛ばすだけでも、

「へぇーそうなんだ」

と、思っていただけるような構成を心がけています。

 

今回は

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

 宣言での変数名が重複し、コンパイルエラーになってしまいます。

 

以上、解説でした。

関連記事

記事一覧