すべてのプロダクト
Search
ドキュメントセンター

PolarDB:キーワード

最終更新日:Nov 20, 2025

Oracle データベースから移行する場合や、Oracle 構文を使用するアプリケーションを開発する場合、キーワードを誤って使用すると SQL 構文エラーが発生する可能性があります。これを防ぐために、PolarDB for PostgreSQL (Oracle 互換) はキーワードを予約、列名、関数名の 3 つのカテゴリに分類しています。各カテゴリには特定の使用ルールがあります。これらのルールに従うことで、準拠した SQL を記述し、コードの互換性と標準化を確保できます。

基本原則

柔軟な SQL 構文の互換性を提供するために、PolarDB for PostgreSQL (Oracle 互換) は 3 つのカテゴリのキーワードをサポートしています。これらのカテゴリ間の違いを理解することが、構文エラーを回避するための鍵となります。

  • 予約キーワード: これらはシステムによって予約されている単語です。テーブル名、列名、または関数名として直接使用しないでください。予約キーワードを識別子として使用するには、二重引用符 (") で囲む必要があります。

  • 列名キーワード: これらは列名やテーブル名として使用できますが、一般的なデータの型や関数の名前としては使用できません。

  • 関数名キーワード: これらは関数名として使用できますが、テーブル名や列名としては使用できません。

これらの異なる種類のキーワードを正しく使用することで、構文の競合を回避し、SQL の互換性とコードの標準化を向上させることができます。

キーワードクイックリファレンス

予約キーワード

ALL

ANALYSE

ANALYZE

AND

ANY

ARRAY

AS

ASC

ASYMMETRIC

BOTH

CASE

CHECK

COLLATE

COLUMN

CONNECT_BY_ROOT

CONSTRAINT

CREATE

CURRENT_CATALOG

CURRENT_ROLE

CURRENT_TIME

CURRENT_TIMESTAMP

CURRENT_USER

DEFAULT

DEFERRABLE

DESC

DISTINCT

DO

ELSE

END

EXCEPT

FALSE

FETCH

FOR

FOREIGN

FROM

GRANT

GROUP

HAVING

IN

INITIALLY

INTERSECT

INTO

LATERAL

LEADING

LEVEL

LIMIT

LOCALTIME

LOCALTIMESTAMP

LOOP

MINUS

NOT

NULL

OFFSET

ON

ONLY

OR

ORDER

PLACING

POLAR_SYS_ROWID_ATTR

PRIOR

REFERENCES

RETURNING

ROWNUM

SELECT

SESSION_USER

SOME

SYMMETRIC

TABLE

THEN

TO

TRAILING

TRUE

UNION

UNIQUE

USER

USING

VARIADIC

WHEN

WHERE

WINDOW

WITH

列名キーワード

BETWEEN

BIGINT

BINARY_DOUBLE

BINARY_FLOAT

BINARY_INTEGER

BIT

BLOB

BOOLEAN

CHAR

CHARACTER

CLOB

COALESCE

DATETIME

DEC

DECIMAL

EXISTS

FLOAT

GREATEST

GROUPING

GROUPING_ID

GROUP_ID

INOUT

INT

INTEGER

INTERVAL

LEAST

LONG

LONGTEXT

MEDIUMTEXT

NATIONAL

NCHAR

NCLOB

NONE

NORMALIZE

NULLIF

NUMBER

NUMERIC

NVARCHAR

NVARCHAR2

OUT

OVERLAY

PLS_INTEGER

PRECISION

RAW

REAL

ROW

SETOF

SMALLINT

SUBSTRING

TIME

TIMESTAMP

TIMESTAMPLTZ

TREAT

TRIM

UROWID

VALUES

VARCHAR

VARCHAR2

XMLATTRIBUTES

XMLCONCAT

XMLELEMENT

XMLEXISTS

XMLFOREST

XMLNAMESPACES

XMLPARSE

XMLPI

XMLROOT

XMLSERIALIZE

XMLTABLE

関数名キーワード

AUTHORIZATION

BINARY

COLLATION

CONCURRENTLY

CROSS

CURRENT_SCHEMA

FREEZE

FULL

ILIKE

INNER

IS

ISNULL

JOIN

LEFT

LIKE

NATURAL

NOTNULL

OVERLAPS

RIGHT

SIMILAR

TABLESAMPLE

VERBOSE

例: 識別子を正しく使用する方法

以下の例は、キーワードと同じ名前を持つ識別子を処理する際の正しい方法と誤った方法を示しています。

シナリオ 1: テーブル作成時にキーワードを列名として使用する

order という名前の列を含むテーブルを作成します。

正しい使用法

キーワードを二重引用符で囲んで、強制的に識別子として扱わせます。

CREATE TABLE t_order (
    id INT PRIMARY KEY,
    "order" VARCHAR(50) -- 二重引用符を使用します。
);

結果:

CREATE TABLE

誤った使用法

キーワードを直接列名として使用すると、構文エラーが発生します。

CREATE TABLE t_order (
    id INT PRIMARY KEY,
    order VARCHAR(50) -- "order" は予約キーワードです。
);

結果:

ERROR:  syntax error at or near "order"
LINE 3:     order VARCHAR(50) 
            ^

シナリオ 2: キーワードで名前が付けられた列からデータをクエリする

t_order テーブルから order 列をクエリします。この列は、名前が二重引用符で囲まれて定義されています。

正しい使用法

列をクエリする際にも、二重引用符を使用する必要があります。

-- サンプルデータを挿入します。
INSERT INTO t_order (id, "order") VALUES (1, 'PolarDB');

-- 正しいクエリ。
SELECT id, "ORDER" FROM t_order;

結果:

 id |  ORDER  
----+---------
  1 | PolarDB
(1 row)

誤った使用法

二重引用符を使用しない場合、データベースは列名をキーワードとして解釈し、列を見つけることができません。

-- 誤った例: 二重引用符がありません。
SELECT id, order FROM t_order;

結果:

ERROR:  syntax error at or near "order"
LINE 1: SELECT id, order FROM t_order;
                   ^