.NET の SQL エスケープ シーケンス
通常、外部結合やスカラ関数の呼び出しなどの言語機能の多くは、DBMS によって実装されます。これらの機能の標準的な構文が定義されていても、DBMS 特有の構文が使われる場合がよくあります。.NET では、次の言語機能の標準的な構文を含む、エスケープ シーケンスをサポートします。
•日付、時刻およびタイムスタンプのリテラル
•数値、文字列およびデータ型変換関数などのスカラー関数
•外部結合
.NET で使用するエスケープ シーケンスは次のとおりです。
{extension}
このエスケープ シーケンスは、PSQL ADO.NET データ プロバイダーによって認識および解析されます。データ プロバイダーはこのエスケープ シーケンスをデータ ストア固有の文法で置き換えます。
日付、時刻、タイムスタンプのエスケープ シーケンス
日付、時刻、およびタイムスタンプ リテラルのエスケープ シーケンスは次のとおりです。
{literal-type '値}
literal-type は、以下に示す型のうちの 1 つです。
リテラルの型 | 説明 | 値の形式 |
d | 日付 | yyyy-mm-dd |
t | 時刻 | hh:mm:ss [1] |
ts | タイムスタンプ | yyyy-mm-dd hh:mm:ss[.f...] |
例:
UPDATE Orders SET OpenDate={d '1997-01-29'}
WHERE OrderID=1023
スカラー関数
SQL 文で使用できるスカラー関数の構文は、次のとおりです。
{fn scalar-function}
scalar-function は、PSQL ADO.NET データ プロバイダーでサポートされるスカラー関数です。
例:
SELECT {fn UCASE(NAME)} FROM EMP
表
66 は、サポートされるスカラー関数を示します。
表 66 サポートされるスカラー関数
文字列関数 | 数値関数 | 日付時刻関数 | システム関数 |
ASCII BIT_LENGTH CHAR CHAR_LENGTH CHARACTER_LENGTH CONCAT LCASE または LOWER LEFT LENGTH LOCATE LTRIM OCTET_LENGTH POSITION REPLACE REPLICATE RIGHT RTRIM SPACE STUFF SUBSTRING UCASE または UPPER | ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 MOD PI POWER RADIANS RAND ROUND SIGN SIN SQRT TAN TRUNCATE | CURDATE CURRENT_DATE CURTIME CURRENT_TIME CURRENT_TIMESTAMP DAYNAME DAYOFMONTH DAYOFYEAR EXTRACT HOUR MINUTE MONTH MONTHNAME NOW QUARTER SECOND TIMESTAMPADD TIMESTAMPDIFF WEEK YEAR | DATABASE USER |
外部結合のエスケープ シーケンス
.NET では SQL92 の左外部結合、右外部結合、および完全外部結合の構文をサポートしています。外部結合用のエスケープ シーケンスは次のとおりです。
{oj outer-join}
この outer-join には次のような構文が入ります。
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
各項目の説明は次のとおりです。
table-reference はテーブル名で、search-condition はテーブルを結合するのに使用する条件です。
例:
SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status
FROM {oj Customers LEFT OUTER JOIN
Orders ON Customers.CustID=Orders.CustID}
WHERE Orders.Status='OPEN'
PSQL ADO.NET データ プロバイダーは、以下の外部結合エスケープ シーケンスを PSQL 9.x 以上と同様にサポートします。
•左外部結合
•右外部結合
•完全外部結合