8.3.26 nativeSQL(String sql)
- 〈この項の構成〉
(1) 機能
指定したSQL文内のエスケープ句を,HADBが実行できる形式に変換します。
(2) 形式
public synchronized String nativeSQL(String sql) throws SQLException
(3) 引数
- String sql:
-
SQL文を指定します。
(4) 戻り値
HADBが実行できるSQL文が返却されます。
sqlにnullを指定した場合,nullが返却されます。sqlに空文字を指定した場合,空文字が返却されます。
(5) 発生する例外
次に示す場合にSQLExceptionが投入されます。
-
Connectionオブジェクトがクローズされている場合
-
指定されたSQLのエスケープ句の形式が次のように不正である場合
-
"{"およびキーワードはあるが,"}"がない
-
-
指定されたSQL文の長さが,16,000,000文字を超えている場合
(6) エスケープ句の構文規則
指定されたSQL文内のエスケープ句を,HADBが実行できる形式に変換して返します。エスケープ句の構文規則を次に示します。
エスケープ句 ::= 日付・時刻・時刻印のエスケープシーケンス | LIKE述語のエスケープ文字のエスケープシーケンス | 外結合のエスケープシーケンス | スカラ関数のエスケープシーケンス 日付・時刻・時刻印のエスケープシーケンス ::= 日付のエスケープシーケンス | 時刻のエスケープシーケンス | 時刻印のエスケープシーケンス 日付のエスケープシーケンス ::= エスケープ開始子 d 日付データの既定の文字列表現※1 エスケープ終了子 時刻のエスケープシーケンス ::= エスケープ開始子 t 時刻データの既定の文字列表現※2 エスケープ終了子 時刻印のエスケープシーケンス ::= エスケープ開始子 ts 時刻印データの既定の文字列表現※3 エスケープ終了子 LIKE述語のエスケープ文字のエスケープシーケンス ::= エスケープ開始子 escape エスケープ文字 エスケープ終了子 外結合のエスケープシーケンス ::= エスケープ開始子 oj 結合表 エスケープ終了子 スカラ関数のエスケープシーケンス ::= エスケープ開始子 fn スカラ関数 エスケープ終了子 スカラ関数 ::= 標準形式のスカラ関数※4 エスケープ開始子 ::= '{' エスケープ終了子 ::= '}'
- 注※1
-
'YYYY-MM-DD'で表される文字列表現のことです。
- 注※2
-
'hh:mm:ss[.f...]'で表される文字列表現のことです。
- 注※3
-
'YYYY-MM-DD hh:mm:ss[.f...]'で表される文字列表現のことです。
- 注※4
-
標準形式のスカラ関数については,「7.8 エスケープ句で指定できるスカラ関数」を参照してください。
なお,下線部には,エスケープ句を指定できません。また,JDBCドライバでは構文解析をしないで,変換後もそのままとし,HADBサーバの構文解析に任せます。
エスケープシーケンスのキーワードを次に示します。キーワードについては,大文字と小文字を区別しません。
-
日付のエスケープシーケンス内の"d"
-
時刻のエスケープシーケンス内の"t"
-
時刻印のエスケープシーケンス内の"ts"
-
LIKE述語のエスケープ文字のエスケープシーケンス内の"escape"
-
外結合のエスケープシーケンス内の"oj"
-
スカラ関数のエスケープシーケンス内の"fn"
エスケープ句の入力規則を次に示します。
-
エスケープ句内の区切り文字には,半角空白が指定できます。
-
区切り文字は,エスケープ開始子の後ろ,キーワードの後ろ,およびエスケープ終了子の前に挿入できます。
-
1つのSQL文中に,複数のエスケープ句を指定できます。
-
JDBCドライバは指定されたSQL文内のエスケープ句を,HADBが実行できる形式に変換します。変換するのは,{ }で囲まれたエスケープ句内だけです。エスケープ句外は,何も変換しません。
エスケープ句の変換規則を次の表に示します。
対象エスケープ句 |
変換前 |
変換後 |
---|---|---|
日付 |
エスケープ開始子 d 日付データの既定の文字列表現 エスケープ終了子 |
DATE日付データの既定の文字列表現 |
時刻 |
エスケープ開始子 t 時刻データの既定の文字列表現 エスケープ終了子 |
TIME時刻データの既定の文字列表現 |
時刻印 |
エスケープ開始子 ts 時刻印データの既定の文字列表現 エスケープ終了子 |
TIMESTAMP時刻印データの既定の文字列表現 |
LIKE |
エスケープ開始子 escape エスケープ文字 エスケープ終了子 |
escape エスケープ文字 |
外結合 |
エスケープ開始子 oj 結合表 エスケープ終了子 |
結合表 |
スカラ関数 |
エスケープ開始子 fn スカラ関数 エスケープ終了子 |
HADB形式のスカラ関数※ |
- 注※
-
標準形式のスカラ関数を,HADB形式に変換します。
標準形式とHADB形式が異なるスカラ関数の変換内容を次の表に示します。
基本的に,スカラ関数の引数の個数チェックはしません。
表8‒11 標準形式とHADB形式が異なるスカラ関数の変換内容一覧 スカラ関数
変換前の形式
変換後の形式(HADB形式)
数学関数
CEILING(number)
CEIL(number)
LOG(float)
LN(float)
LOG10(float)
LOG(10,float)
RAND([number, number])
RANDOM([number, number])
TRUNCATE(number[, places])
TRUNC(number[, places])
文字列関数
CHAR(code)
CHR(code)
LCASE(string)
LOWER(string)
OCTET_LENGTH(string)
LENGTHB(string)
SUBSTRING(string, start[, length])
SUBSTR(string, start[, length])
UCASE(string)
UPPER(string)
時刻と日付の関数
CURDATE()
CURRENT_DATE
CURRENT_DATE()
CURRENT_DATE
CURRENT_TIME()
CURRENT_TIME
CURRENT_TIMESTAMP()
CURRENT_TIMESTAMP
CURTIME()
CURRENT_TIME
NOW()
CURRENT_TIMESTAMP
システム関数
USER()
CURRENT_USER