【Oracle】「ORA-00923: FROMキーワードが指定の位置にありません」はFROM句の前を見ろ!

こんにちは、カメ助(@kamesuke_blog)です。

OracleDBからデータ取得する際に、「ORA-00923: FROMキーワードが指定の位置にありません。」のエラーに遭遇しました。対処方法について調べたので共有します。

カメ助

この記事はこんな人にオススメ
・「ORA-00923」の原因を知りたい
ORA-00923」の対処方法を知りたい

OracleDBで「ORA-00923: FROMキーワードが指定の位置にありません。」のエラーが出た際には、今回の記事を参考に対応してみて下さい!

目次

ORA-00923の原因

結論:ORA-00923のエラーは、「FROM句より前のSQL文が間違っている」ことが原因です

そのため、FROM句より前のSQL文を修正すれば解決できます

ORA-00923の対処方法

ORA-00923のエラーの対処方法は全部で3つあります。

  1. FROM句のスペル間違い
  2. SELECT句の別名に問題がある
  3. Oracle SQLのSELECT句の仕様でエラーになっている

順番に紹介しますので1から順番に確認していってください。

対処法1:FROM句のスペル間違い

まずは、「FROM句のスペル間違い」を確認しましょう。

SELECT USER_NAME FORM TABLE_NAME; ←ERROR(FORMになっている)

SELECT USER_NAME FROM TABLE_NAME; ←OK(FORMをFROMに変更)

カメ助

「FROM」のスペルが、「FORM」と書いてエラーになることがあります。

対処法2:SELECT句の別名に問題がある

次は、SELECT句の別名に問題がないか確認しましょう。

別名を使う際のよくあるミス3選
  • 別名にOracle SQLの予約語を使用している
  • 別名にシングルクォーテーション「’」を使用している
  • 別名の先頭文字が数字になっている

順に解説していきます。

1:別名にOracle SQLの予約語を使用している

Oracle SQLには、予約語と呼ばれる別名には使用できない文字列があります。(例)DATE、SIZEなど

参考:Oracle SQL予約語

対処方法としては、別名に予約語を使用しないようにすれば解決します。

SELECT USER_NAME DATE    FROM TABLE_NAME; ←ERROR(予約語のDATEを使用している)

SELECT USER_NAME DATE_TEST FROM TABLE_NAME; ←OK(DATEをDATE_TESTに変更)

2:別名にシングルクォーテーション「’」を使用している

Oracle SQLでは別名に、シングルクォーテーション「’」を使用するとエラーになります。

対処方法としては、別名のシングルクォーテーション「’」をダブルクォーテーション「”」に変更すれば解決します。

SELECT USER_NAME NAME FROM TABLE_NAME; ←ERROR(シングルクォーテーション「’」を使用している)

SELECT USER_NAME NAME FROM TABLE_NAME; ←OK(「’」を「”」に変更)

3:別名の先頭文字が数字になっている

Oracle SQLでは別名の先頭文字に数字は指定できません。

対処方法としては、別名の先頭文字の数字を英字に変更すれば解決します。

SELECT USER_NAME 1NAME FROM TABLE_NAME; ←ERROR(先頭文字が数字「1」になっている)

SELECT USER_NAME NAME  FROM TABLE_NAME; ←OK(「’」を「”」に変更)

対処法3:Oracle SQLのSELECT句の仕様でエラーになっている

Oracle SQLでは、SELECT句で全項目取得したうえで、個別の項目を取得する場合に注意が必要です。

対処方法としては、全項目取得する「*」には「テーブル名.*」を指定すれば解決します。

SELECT *       ,USER_NAME FROM TABLE_NAME; ←ERROR

SELECT TABLE_NAME.*,USER_NAME FROM TABLE_NAME; ←OK(「*」を「TABLE_NAME.*」に変更)

カメ助

参考記事より、SQLServerではエラーにならないみたいです。

参考:【Oracle】SELECTステートメントの注意点

終わりに

今回は、OracleDBの「ORA-00923: FROMキーワードが指定の位置にありません」の原因と対処方法について説明しました。

あまり遭遇しないと思いますが、エラーメッセージからエラー原因の特定が意外と難しいため、今回の記事内容を頭の片隅に覚えていただければ幸いです。

カメ助

教訓:ORA-00923は、FROM句の前を見るべし

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大阪でITエンジニアしています。(9年目に突入)
趣味でウェブサイトに関することをいろいろと勉強しています。

勉強した内容やプログラミングに関する情報を中心に役立つ情報を発信するべく日々ブログを更新しています。

3度の飯よりも「柿の種」をこよなく愛する関西人。

コメント

コメントする

目次