CData Virtuality がサポートする標準的なスカラー関数に加え、基盤となるDBMS 関数に基づいて特定のコネクタに固有の定義済み関数があります。これらの関数の詳細については、CData Virtuality Studio の各データソースの「Functions」セクションを参照してください。これらの関数は、それぞれのデータソース内で排他的に使用するためにプッシュダウンされます。

データソースに対してこれらの定義済み関数を有効にするには、インポータープロパティimporter.loadSourceSystemFunctionsTRUEに設定します。

現在、定義済み関数は以下のDBMSで完全にサポートされています:

  • Microsoft SQL Server:CData Virtuality はMicrosoft SQL Server v14、v15、v16 の関数をサポートしています。それ以下のバージョンも使用できますが、完全にはサポートされていません;

  • Microsoft Azure Database: v12 関数がサポートされています;

  • Snowflake: v8 関数がサポートされています。

Snowflake functions are supported since v4.8

Built-in Connector-specific Functions に関する情報は、SYS.FunctionsおよびSYS.FunctionParamsテーブルに記載されています。

Information about built-in connector-specific functions is located in SYS.Functions and SYS.FunctionParams tables since v4.8

Example

SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;

Aggregate Functions Usage

Aggregate Functionsは、GROUP BY、1つの引用符で囲まれた文字列を集約式として使用する必要があります。

Example

SELECT mssql.MAX('a') FROM mssql.test_agg GROUP BY b ORDER BY b desc;;

この例では、MAX関数のパラメータとして使用されているaは列名です。

IIF, ISNULL, TRY_PARSE Usage

IIF , ISNULL , TRY_PARSEは、一重引用符で囲まれた文字列式で使用する必要があります。文字列定数は三重の一重引用符で囲む必要があります。

Examples

SELECT mssql.IIF('45 > 60', 'a', 'b');;
SELECT mssql.IIF('a > b', a, b) FROM mssql.test_a WHERE b=10;;
SELECT mssql.ISNULL('NULL', 'replacement');;
SELECT mssql.ISNULL('''test''', 'replacement');;
SELECT mssql.ISNULL(mssql.ERROR_MESSAGE(), 'replacement');;
SELECT mssql.TRY_PARSE('''Monday, 13 December 2010''', 'AS datetime2 USING ''en-US''');;
SELECT mssql.TRY_PARSE('CHAR_1_COL', 'AS real') FROM mssql.test_cast_funcs;;

Asterisk and DISTINCT Usage

COUNT , COUNT_BIG , BINARY_CHECKSUM , CHECKSUMは、アスタリスクを1つ引用符で囲んで使用してください。

関数の中には、DISTINCTを一重引用符で囲んだパラメータで使用できるものがあります。

Examples

SELECT mssql.COUNT('*') FROM mssql.test_agg;;
SELECT mssql.VARP('DISTINCT a') FROM mssql.test_agg;;

Window Expression as a Parameter

一部の関数(解析関数など)では、最後のパラメータとしてWindow式を使用します。

Examples

SELECT mssql.LAG(a, 1, 0, 'OVER(ORDER BY b)') FROM mssql.test_a;;
SELECT mssql.LEAD(a, 1, 0, 'OVER(ORDER BY b)') FROM mssql.test_a;;
SELECT mssql.FIRST_VALUE(b, 'OVER (ORDER BY a)') FROM mssql.test_a;;
SELECT mssql.ROW_NUMBER('OVER(ORDER BY a)'), a FROM mssql.test_a;;

Restrictions

Usage Within Same Data Source Only

データソースの組み込み関数は、同じデータソースのテーブルと列でのみ使用できます。

有効な使用例:

SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;

無効な使用例です:

SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql_other_db.test_a;;
SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM postgres.test_a;;

Materialized Tables

マテリアライズド・テーブルは物理的に別のデータ・ソースにあるため、組み込み関数を使用することはできません。代わりに、Analytical Storageデータ・ソースが同様の関数をサポートしている場合は、Analytical Storageの同様の関数を使用するようにクエリを書き換えることができます。

例えば、mssql.test_aテーブルがanalytical_storageにマテリアライズされ、対応する推奨最適化が有効になっている場合:

有効な使用例(Analytical Storageとソース・データベースの両方がMicrosoft SQL Serverの場合):

SELECT analytical_storage.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;

無効な使用例です:

SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;

Combining Built-in Functions with CData Virtuality Functions

コネクタ固有の組み込み関数と、プッシュダウンできないCData Virtuality 関数を組み合わせることはできません。例えば、以下のクエリはエラーを生成します:

SELECT URLENCODE(mssql.Fun_Concat('http//', a), 'UTF-8') FROM mssql.test_a;;
SELECT mssql.Fun_Concat(URLDECODE('http//' + a, 'UTF-8'), a) FROM mssql.test_a;;

Developer Preview Functions

以下の Microsoft SQL Server 関数は、現在開発者プレビューです:

APPLOCK_MODE, APPLOCK_TEST, APPROX_PERCENTILE_CONT, APPROX_PERCENTILE_DISC, ASSEMBLYPROPERTY, ASYMKEY_ID, ASYMKEYPROPERTY, CERT_ID, CERTENCODED, CERTPROPERTY, DECRYPTBYASYMKEY, DECRYPTBYCERT, DECRYPTBYKEY, DECRYPTBYKEYAUTOASYMKEY, DECRYPTBYKEYAUTOCERT, DECRYPTBYPASSPHRASE, EDGE_ID_FROM_PARTS, ENCRYPTBYASYMKEY, ENCRYPTBYCERT, ENCRYPTBYKEY, ENCRYPTBYPASSPHRASE, ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE, EVENTDATA, GRAPH_ID_FROM_EDGE_ID, GRAPH_ID_FROM_NODE_ID, GROUPING, GROUPING_ID, INDEX_COL, INDEXKEY_PROPERTY, INDEXPROPERTY, IS_OBJECTSIGNED, KEY_GUID, KEY_ID, KEY_NAME, NODE_ID_FROM_PARTS, OBJECT_ID_FROM_EDGE_ID, OBJECT_ID_FROM_NODE_ID, PERCENTILE_CONT, PERCENTILE_DISC, SCOPE_IDENTITY, SIGNBYASYMKEY, SIGNBYCERT, SQL_VARIANT_PROPERTY, SYMKEYPROPERTY, TRIGGER_NESTLEVEL, VERIFYSIGNEDBYASYMKEY, VERIFYSIGNEDBYCERT

Database Built-in Functions support is available since v4.6

Database Built-in Functions support is extended for Microsoft SQL Server with around 250 functions including aggregate functions, window functions, IFNULL, ISNULL, TRY_PARSE, CHECKSUM, etc, and are available also for v14 and v15 since v4.7