> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloud.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Virtuality Engine SQL Reference

> アカウントで Data Virtuality（DV）Engine が有効な場合に利用できる、追加の SQL コマンド、構文、および関数。

<Warning>
  このページの機能は、アカウントで DV Engine が有効な場合にのみ利用できます。QF ドライバーを使用しているアカウントでは、これらの機能は利用できません。
</Warning>

## EXPLAIN

SQL 文の実行計画を返します。EXPLAIN は SELECT、DELETE、その他の DML 文をサポートします。結果セットには string 型の単一カラム `plan` が含まれます。

<Frame>
  <img src="https://mintcdn.com/cdata/EJied7Fsl-b8SOZK/ja/images/explain_dv_engine.png?fit=max&auto=format&n=EJied7Fsl-b8SOZK&q=85&s=96dfc56637a95a937f0691f73acb5e38" alt="EXPLAIN example" width="1650" height="656" data-path="ja/images/explain_dv_engine.png" />
</Frame>

**構文**

```sql theme={null}
EXPLAIN { SELECT | INSERT | UPDATE | DELETE | ... }
```

**例**

```sql theme={null}
EXPLAIN SELECT * FROM Salesforce1.Salesforce.Account
```

## SQL 構文

### CROSS APPLY / OUTER APPLY

左側のテーブルの各行に対して、テーブル値関数またはサブクエリを適用する横方向結合（lateral join）です。

* `CROSS APPLY` 適用した式が行を返さない左側の行は除外します（内部結合と同等）。
* `OUTER APPLY` 適用した式が行を返さない場合でも左側の行を保持し、一致しないカラムを NULL で埋めます（左結合と同等）。

**構文**

```sql theme={null}
FROM table { CROSS APPLY | OUTER APPLY } { tvf | subquery }
```

**例**

```sql theme={null}
SELECT t.Id, s.Value
FROM MyTable t
CROSS APPLY STRING_SPLIT(t.Tags, ',') AS s
```

## Window 関数

Window 関数は DV Engine で評価され、個々のデータソースにはプッシュダウンされません。

### LEAD

ウィンドウ内で現在の行から `offset` 行先の行にある `expr` の値を返します。該当する行が存在しない場合は `default` を返します。

**構文**

```sql theme={null}
LEAD(expr [, offset [, default]]) OVER (...)
```

**パラメータ**

* **expr** 対象の行で評価する式。
* **offset** 前方に見る行数。デフォルト値は 1 です。
* **default** 指定されたオフセットに行が存在しない場合に返す値。デフォルト値は NULL です。

**例**

```sql theme={null}
SELECT Name, Salary,
       LEAD(Salary, 1, 0) OVER (ORDER BY HireDate) AS NextSalary
FROM Employees
```

### LAG

ウィンドウ内で現在の行から `offset` 行前の行にある `expr` の値を返します。該当する行が存在しない場合は `default` を返します。

**構文**

```sql theme={null}
LAG(expr [, offset [, default]]) OVER (...)
```

**パラメータ**

* **expr** 対象の行で評価する式。
* **offset** 後方に見る行数。デフォルト値は 1 です。
* **default** 指定されたオフセットに行が存在しない場合に返す値。デフォルト値は NULL です。

**例**

```sql theme={null}
SELECT Name, Salary,
       LAG(Salary) OVER (ORDER BY HireDate) AS PreviousSalary
FROM Employees
```

### FIRST\_VALUE

現在のウィンドウフレーム内の最初の値を返します。

**構文**

```sql theme={null}
FIRST_VALUE(expr) OVER (...)
```

**パラメータ**

* **expr** 評価する式。

**例**

```sql theme={null}
SELECT Name, Salary,
       FIRST_VALUE(Salary) OVER (PARTITION BY Department ORDER BY HireDate) AS FirstSalary
FROM Employees
```

### LAST\_VALUE

現在のウィンドウフレーム内の最後の値を返します。

**構文**

```sql theme={null}
LAST_VALUE(expr) OVER (...)
```

**パラメータ**

* **expr** 評価する式。

**例**

```sql theme={null}
SELECT Name, Salary,
       LAST_VALUE(Salary) OVER (
           PARTITION BY Department ORDER BY HireDate
           ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
       ) AS LastSalary
FROM Employees
```

## 集計関数

### STDDEV\_POP / STDDEV\_SAMP

数値カラムの母標準偏差または標本標準偏差を返します。

**構文**

```sql theme={null}
STDDEV_POP(expr)
STDDEV_SAMP(expr)
```

**パラメータ**

* **expr** 評価する数値カラムまたは式。

**例**

```sql theme={null}
SELECT STDDEV_POP(Revenue) FROM Sales
SELECT STDDEV_SAMP(Revenue) FROM Sales
```

### VAR\_POP / VAR\_SAMP

数値カラムの母分散または標本分散を返します。

**構文**

```sql theme={null}
VAR_POP(expr)
VAR_SAMP(expr)
```

**パラメータ**

* **expr** 評価する数値カラムまたは式。

**例**

```sql theme={null}
SELECT VAR_POP(Revenue) FROM Sales
SELECT VAR_SAMP(Revenue) FROM Sales
```

### STRING\_AGG

グループ内の値を、指定した区切り文字で連結して単一の文字列にします。

**構文**

```sql theme={null}
STRING_AGG(expr, delimiter)
```

**パラメータ**

* **expr** 連結するカラムまたは式。
* **delimiter** 連結する値の間に配置する区切り文字列。

<Note>
  `STRING_AGG` の内部で `DISTINCT` または `ORDER BY` を使用すると、評価は DV Engine 内で行われ、ソースにはプッシュダウンされません。
</Note>

**例**

```sql theme={null}
SELECT STRING_AGG(Name, ', ') FROM Account GROUP BY Industry
```

### JSONARRAY\_AGG

グループ内の値を JSON 配列にまとめます。JSON 型の値を返します。

**構文**

```sql theme={null}
JSONARRAY_AGG(expr)
```

**パラメータ**

* **expr** まとめるカラムまたは式。

**例**

```sql theme={null}
SELECT Id, JSONARRAY_AGG(Tag) FROM ArticleTags GROUP BY Id
```

## 文字列関数

### REGEXP\_REPLACE

正規表現パターンに一致する部分文字列を置換します。

**構文**

```sql theme={null}
REGEXP_REPLACE(str, pattern, replacement [, flags])
```

**パラメータ**

* **str** 入力文字列。
* **pattern** 一致させる正規表現。
* **replacement** 各一致に対して置換する文字列。
* **flags** オプションの修飾フラグ: `g`（すべての一致を置換）、`m`（複数行）、`i`（大文字小文字を区別しない）。

**例**

```sql theme={null}
SELECT REGEXP_REPLACE(PhoneNumber, '[^0-9]', '', 'g') FROM Account
```

### REGEXP\_INSTR

文字列内で正規表現が最初に一致した位置を 1 始まりで返します。一致がない場合は 0 を返します。

**構文**

```sql theme={null}
REGEXP_INSTR(str, pattern)
```

**パラメータ**

* **str** 入力文字列。
* **pattern** 一致させる正規表現。

**例**

```sql theme={null}
SELECT REGEXP_INSTR(Description, '[0-9]+') FROM Products
-- Result: position of the first digit sequence, or 0 if none
```

### REGEXP\_SUBSTR

正規表現に一致した部分文字列を返します。一致がない場合は NULL を返します。

**構文**

```sql theme={null}
REGEXP_SUBSTR(str, pattern)
```

**パラメータ**

* **str** 入力文字列。
* **pattern** 一致させる正規表現。

**例**

```sql theme={null}
SELECT REGEXP_SUBSTR(Description, '[0-9]+') FROM Products
-- Result: first digit sequence in Description, or NULL
```

### SPLIT\_PART

文字列を区切り文字で分割した後の N 番目のフィールドを返します。フィールドは 1 始まりです。

**構文**

```sql theme={null}
SPLIT_PART(str, delimiter, n)
```

**パラメータ**

* **str** 入力文字列。
* **delimiter** 区切り文字列。
* **n** 返すフィールドの 1 始まりのインデックス。

**例**

```sql theme={null}
SELECT SPLIT_PART('a,b,c', ',', 2)
-- Result: 'b'
```

### BASE64\_ENCODE / BASE64\_DECODE

バイナリデータを Base64 文字列にエンコード、または Base64 文字列をバイナリにデコードします。

**構文**

```sql theme={null}
BASE64_ENCODE(bytes)
BASE64_DECODE(str)
```

**パラメータ**

* **bytes** エンコードするバイナリデータ。
* **str** デコードする Base64 エンコード文字列。

**例**

```sql theme={null}
SELECT BASE64_ENCODE(FileContent) FROM Attachments
SELECT BASE64_DECODE(EncodedContent) FROM Attachments
```

### TEXT\_ENCODE / TEXT\_DECODE

指定した文字セットを使用して、文字列とバイト間の変換を行います。

**構文**

```sql theme={null}
TEXT_ENCODE(str, charset)
TEXT_DECODE(bytes, charset)
```

**パラメータ**

* **str** エンコードする文字列。
* **bytes** デコードするバイトシーケンス。
* **charset** 文字セット名。`UTF-8` や `ISO-8859-1` など。

**例**

```sql theme={null}
SELECT TEXT_ENCODE(Notes, 'UTF-8') FROM Documents
SELECT TEXT_DECODE(RawBytes, 'ISO-8859-1') FROM Documents
```

### similarity

0.0 から 1.0 の間のあいまい文字列類似度スコアを返します。

**構文**

```sql theme={null}
similarity(v1, v2 [, algorithm])
```

**パラメータ**

* **v1** 1 つ目の文字列。
* **v2** `v1` と比較する 2 つ目の文字列。
* **algorithm** オプション。使用する類似度アルゴリズム。デフォルト値は `jaro-winkler` です。`levenshtein` などの代替も指定できます。

**例**

```sql theme={null}
SELECT Name, similarity(Name, 'John Smith') AS Score
FROM Contacts
ORDER BY Score DESC
```

## セキュリティ・暗号関数

### SHA1 / SHA2\_256 / SHA2\_512

入力テキストの SHA ハッシュを計算し、結果をバイナリ値として返します。固定のアルゴリズムを指定したい場合に、`HASHBYTES` の直接的な代替として使用します。

**構文**

```sql theme={null}
SHA1(text)
SHA2_256(text)
SHA2_512(text)
```

**パラメータ**

* **text** ハッシュ化する文字列。

**例**

```sql theme={null}
SELECT SHA2_256(Password) FROM Users
```

### AES\_ENCRYPT / AES\_DECRYPT

AES-256 対称暗号化を使用して文字列を暗号化または復号します。

**構文**

```sql theme={null}
AES_ENCRYPT(text, key)
AES_DECRYPT(bytes, key)
```

**パラメータ**

* **text** 暗号化する平文文字列。
* **bytes** 復号する暗号化バイトシーケンス。
* **key** AES-256 暗号化キー。

**例**

```sql theme={null}
SELECT AES_ENCRYPT(CreditCard, 'secret-key') FROM Orders
SELECT AES_DECRYPT(EncryptedCard, 'secret-key') FROM Orders
```

## JSON 関数

### JSONPATHVALUE

JSONPath 式を使用して JSON ドキュメントからスカラー値を抽出します。この関数は [`JSON_EXTRACT`](/ja/SQL-Reference/String-Functions#json_extract) のエイリアスで、CData ドライバーにプッシュダウンされます。

**構文**

```sql theme={null}
JSONPATHVALUE(json, path [, nullLeaf])
```

**パラメータ**

* **json** クエリ対象の JSON ドキュメント。
* **path** 抽出するスカラー値を特定する JSONPath 式。
* **nullLeaf** オプションの Boolean。`true` の場合、リーフノードが存在しなくてもエラーを発生させず NULL を返します。

**例**

```sql theme={null}
SELECT JSONPATHVALUE(Payload, '$.customer.id') FROM Events
```

### JSONQUERY

指定した JSONPath の位置にある JSON フラグメント（オブジェクトまたは配列）を抽出します。スカラーではなく JSON 型の値を返します。

**構文**

```sql theme={null}
JSONQUERY(json, path [, nullLeaf])
```

**パラメータ**

* **json** クエリ対象の JSON ドキュメント。
* **path** 抽出する配列またはオブジェクトを特定する JSONPath 式。
* **nullLeaf** オプションの Boolean。`true` の場合、リーフノードが存在しなくてもエラーを発生させず NULL を返します。

**例**

```sql theme={null}
SELECT JSONQUERY(Payload, '$.items') FROM Orders
```

### JSONPARSE

文字列または CLOB 値を JSON としてパースします。

**構文**

```sql theme={null}
JSONPARSE(clob, wellformed)
```

**パラメータ**

* **clob** パースする文字列または CLOB。
* **wellformed** Boolean。`true` の場合、関数は JSON バリデーションをスキップします。

**例**

```sql theme={null}
SELECT JSONPARSE(RawJson, true) FROM Logs
```

### JSONOBJECT

1 つ以上の名前と値のペアから JSON オブジェクトを構築します。

**構文**

```sql theme={null}
JSONOBJECT(expr AS name [, expr AS name, ...])
```

**パラメータ**

* **expr** キーに対する値の式。
* **name** 値に対するキー名。

**例**

```sql theme={null}
SELECT JSONOBJECT(Name AS 'name', Revenue AS 'revenue') FROM Account
```

### JSONARRAY

値のリストから JSON 配列を構築します。

**構文**

```sql theme={null}
JSONARRAY(expr [, expr, ...])
```

**パラメータ**

* **expr** 配列に含める 1 つ以上の値。

**例**

```sql theme={null}
SELECT JSONARRAY(FirstName, LastName, Email) FROM Contacts
```

### JSONTOXML

JSON 値を XML ドキュメントに変換します。

**構文**

```sql theme={null}
JSONTOXML(rootName, json)
```

**パラメータ**

* **rootName** ルート XML 要素として使用する名前。
* **json** 変換する JSON 値。

**例**

```sql theme={null}
SELECT JSONTOXML('root', Payload) FROM Events
```

### JSONTOARRAY

複数の JSONPath 式を使用して JSON ドキュメントから値を抽出し、配列として返します。各 colpath は、ベースパスに一致する各要素から 1 つの値を抽出します。

**構文**

```sql theme={null}
JSONTOARRAY(json, path, nullLeaf, colpaths...)
```

**パラメータ**

* **json** クエリ対象の JSON ドキュメント。
* **path** 配列反復のためのベース JSONPath。
* **nullLeaf** Boolean。`true` の場合、リーフノードが存在しなくてもエラーを発生させず NULL を返します。
* **colpaths** 1 つ以上の JSONPath 式。それぞれ現在の配列要素から値を抽出します。

**例**

```sql theme={null}
SELECT JSONTOARRAY(Payload, '$.items[*]', true, '$.name', '$.qty') FROM Orders
```

### JSONPath スライス構文

DV Engine は標準の JSONPath を配列スライス記法で拡張しています：

| 式              | 意味                         |
| -------------- | -------------------------- |
| `$.items[..N]` | インデックス 0 から N まで（両端を含む）の要素 |
| `$.items[N..]` | インデックス N から配列の末尾までの要素      |

**例**

```sql theme={null}
SELECT JSONQUERY(Payload, '$.items[..2]') FROM Orders
-- Returns a JSON array of the first three items (indices 0, 1, and 2)

SELECT JSONQUERY(Payload, '$.items[3..]') FROM Orders
-- Returns a JSON array of all items from index 3 onward
```

## 配列関数

### ARRAY\_GET

配列から 1 始まりのインデックスにある要素を返します。

**構文**

```sql theme={null}
ARRAY_GET(arr, idx)
```

**パラメータ**

* **arr** アクセスする配列。
* **idx** 返す要素の 1 始まりのインデックス。

**例**

```sql theme={null}
SELECT ARRAY_GET(Tags, 1) FROM Articles
```

### ARRAY\_LENGTH

配列内の要素数を返します。

**構文**

```sql theme={null}
ARRAY_LENGTH(arr)
```

**パラメータ**

* **arr** 測定する配列。

**例**

```sql theme={null}
SELECT Name, ARRAY_LENGTH(Tags) FROM Articles
```

### ARRAY\_ADD

末尾に値を追加した新しい配列を返します。

**構文**

```sql theme={null}
ARRAY_ADD(arr, value)
```

**パラメータ**

* **arr** 元の配列。
* **value** 追加する値。

**例**

```sql theme={null}
SELECT ARRAY_ADD(Tags, 'new-tag') FROM Articles
```

### ARRAY\_IN

値が配列の要素である場合に `true` を返します。

**構文**

```sql theme={null}
ARRAY_IN(haystack, needle)
```

**パラメータ**

* **haystack** 検索する配列。
* **needle** 探す値。

**例**

```sql theme={null}
SELECT * FROM Articles WHERE ARRAY_IN(Tags, 'featured')
```

### ARRAY\_LIKE

配列内のいずれかの要素が LIKE パターンに一致する場合に `true` を返します。

**構文**

```sql theme={null}
ARRAY_LIKE(haystack, pattern)
```

**パラメータ**

* **haystack** 検索する配列。
* **pattern** 各要素と照合する LIKE パターン。

**例**

```sql theme={null}
SELECT * FROM Articles WHERE ARRAY_LIKE(Tags, '%tech%')
```

### ARRAY\_LIKE\_REGEX

配列内のいずれかの要素が正規表現パターンに一致する場合に `true` を返します。

**構文**

```sql theme={null}
ARRAY_LIKE_REGEX(haystack, pattern)
```

**パラメータ**

* **haystack** 検索する配列。
* **pattern** 各要素と照合する正規表現。

**例**

```sql theme={null}
SELECT * FROM Articles WHERE ARRAY_LIKE_REGEX(Tags, '^tech.*')
```

### ASARRAY / ASLIST

個々の値から配列またはリストを構築します。

**ASLIST**-引数をリストとして返します: Object（java.util.List）を返します。\
**ASARRAY**-引数を配列として返します: SQL 配列を返します。

<Note>SQL 配列型が必要な場合は ASARRAY を使用します。汎用リストが期待される場合（たとえば、リストを受け取る他の関数への入力として）は ASLIST を使用します。</Note>

**構文**

```sql theme={null}
ASARRAY(v1, v2, ...)
ASLIST(v1, v2, ...)
```

**パラメータ**

* **v1, v2, ...** 配列またはリストに含める値。

**例**

```sql theme={null}
SELECT ASARRAY(FirstName, LastName) FROM Contacts
```

## 数値関数

### BITAND / BITOR / BITXOR

2 つの整数に対してビット単位の AND、OR、XOR 演算を実行します。

**構文**

```sql theme={null}
BITAND(x, y)
BITOR(x, y)
BITXOR(x, y)
```

**パラメータ**

* **x** 1 つ目の整数。
* **y** 2 つ目の整数。

**例**

```sql theme={null}
SELECT BITAND(Flags, 3) FROM Permissions
SELECT BITOR(Flags, 4) FROM Permissions
SELECT BITXOR(Flags, 7) FROM Permissions
```

### BITNOT

整数に対してビット単位の NOT 演算を実行します。

**構文**

```sql theme={null}
BITNOT(x)
```

**パラメータ**

* **x** ビット単位で反転する整数。

**例**

```sql theme={null}
SELECT BITNOT(Flags) FROM Permissions
```

## 日付と時刻の関数

### DATE\_FORMAT

MySQL スタイルのフォーマットパターンを使用して、日付またはタイムスタンプを文字列にフォーマットします。

**構文**

```sql theme={null}
DATE_FORMAT(date, format)
```

**パラメータ**

* **date** フォーマットする日付またはタイムスタンプ値。
* **format** フォーマットパターン文字列（例: `'%Y-%m-%d'` や `'%Y-%m-%d %H:%i:%s'`）。

**例**

```sql theme={null}
SELECT DATE_FORMAT(CreatedDate, '%Y-%m-%d') FROM Account
-- Result: '2024-01-15'
```

### ISOWEEK / ISOYEAR

指定した日付の ISO 8601 週番号または ISO 年を返します。第 1 週は、その年の最初の木曜日を含む週です。

**構文**

```sql theme={null}
ISOWEEK(date)
ISOYEAR(date)
```

**パラメータ**

* **date** 評価する日付値。

**例**

```sql theme={null}
SELECT CreatedDate, ISOWEEK(CreatedDate), ISOYEAR(CreatedDate) FROM Account
```

### 日付範囲関数

DV Engine は、日付範囲の境界値を返す便利な関数を提供します。これらを `WHERE` 句で `BETWEEN` や比較演算子と組み合わせて使用し、相対的な期間でフィルタします。

#### L\_LAST\_MONTH / L\_THIS\_MONTH / L\_NEXT\_MONTH

前月、当月、または翌月の開始境界を返します。

```sql theme={null}
WHERE CreatedDate BETWEEN L_LAST_MONTH() AND L_THIS_MONTH()
```

#### L\_LAST\_N\_MONTHS(n) / L\_NEXT\_N\_MONTHS(n)

本日から N か月前方または後方のローリングウィンドウの開始境界を返します。

```sql theme={null}
WHERE CreatedDate >= L_LAST_N_MONTHS(3)
```

#### L\_LAST\_QUARTER / L\_THIS\_QUARTER / L\_NEXT\_QUARTER

前四半期、当四半期、または翌四半期の開始境界を返します。

```sql theme={null}
WHERE CloseDate BETWEEN L_LAST_QUARTER() AND L_THIS_QUARTER()
```

#### L\_LAST\_N\_QUARTERS(n) / L\_NEXT\_N\_QUARTERS(n)

本日から N 四半期前方または後方のローリングウィンドウの開始境界を返します。

```sql theme={null}
WHERE CloseDate >= L_LAST_N_QUARTERS(2)
```

#### L\_LAST\_YEAR / L\_THIS\_YEAR / L\_NEXT\_YEAR

前年、当年、または翌年の開始境界を返します。

```sql theme={null}
WHERE CreatedDate BETWEEN L_LAST_YEAR() AND L_THIS_YEAR()
```

#### L\_LAST\_N\_YEARS(n) / L\_NEXT\_N\_YEARS(n)

本日から N 年前方または後方のローリングウィンドウの開始境界を返します。

```sql theme={null}
WHERE CreatedDate >= L_LAST_N_YEARS(3)
```

#### L\_LAST\_90\_DAYS / L\_NEXT\_90\_DAYS

本日から前方または後方に 90 日のローリングウィンドウの境界日を返します。

```sql theme={null}
WHERE CreatedDate BETWEEN L_LAST_90_DAYS() AND CURRENT_DATE()
```

## その他の関数

### UUID

新しいランダムな UUID 文字列を生成します。

**構文**

```sql theme={null}
UUID()
```

**例**

```sql theme={null}
SELECT UUID()
-- Result: 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
```

## オプティマイザヒント

オプティマイザヒントは SQL コメント内に埋め込まれ、DV Engine にクエリ実行の計画方法を指示します。クエリ結果は変更しません。

### MAKEDEP

依存結合を強制します。エンジンはこのテーブルを最初に評価し、他のソースをクエリする際にそのキー値を `WHERE key IN (...)` フィルタとして使用します。これにより、大きなソースから取得する行数を削減します。

**構文**

```sql theme={null}
FROM table1 JOIN /*+ MAKEDEP */ table2 ON join_criteria

Supports optional sub-options:

FROM table1 JOIN /*+ MAKEDEP(MAX:1000) */ table2 ON join_criteria
FROM table1 JOIN /*+ MAKEDEP(JOIN) */ table2 ON join_criteria
```

**例**

```sql theme={null}
SELECT *
FROM LargeTable 
JOIN /*+ MAKEDEP */ SmallTable ON LargeTable.SmallTableId = SmallTableId
```

### MAKENOTDEP

このテーブルに対して、オプティマイザが依存結合を使用しないようにします。

**構文**

```sql theme={null}
FROM table1 JOIN /*+ MAKENOTDEP */ table2 ON join_criteria
```

**例**

```sql theme={null}
SELECT *
FROM LargeTable 
JOIN /*+ MAKENOTDEP */ SmallTable ON LargeTable.SmallTableId = SmallTableId
```

### MAKEIND

テーブルを依存結合の独立（駆動）側に強制します。エンジンはこのテーブルを最初に評価し、そのキー値を使用して他方をフィルタします。

**構文**

```sql theme={null}
FROM /*+ MAKEIND */ table1 JOIN table2 ON join_criteria
```

**例**

以下の例では、SmallTable が結合を駆動するため、LargeTable は IN リストでフィルタされます。

```sql theme={null}
SELECT *
FROM /*+ MAKEIND */ SmallTable
JOIN LargeTable ON SmallTable.Id = LargeTable.SmallTableId
```

### Source Hint

ヒント文字列をソースコネクタの SQL トランスレータにそのまま渡します。

**構文**

```sql theme={null}
/*+ sh hint_text */
```

**例**

```sql theme={null}
SELECT /*+ sh NOLOCK */ * FROM Account
```
