SnowConvert: Transact組み込み関数¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
集計¶
TransactSQL | Snowflake | Notes |
---|---|---|
TransactSQL | Snowflake | Notes |
APPROX_COUNT_DISTINCT | APPROX_COUNT_DISTINCT | |
AVG | AVG | |
CHECKSUM_AGG | *to be defined | |
COUNT | COUNT | |
COUNT_BIG | *to be defined | |
GROUPING | GROUPING | |
GROUPING_ID | GROUPING_ID | |
MAX | MAX | |
MIN | MIN | |
STDEV | STDDEV, STDEV_SAMP | |
STDEVP | STDDEV_POP | |
SUM | SUM | |
VAR | VAR_SAMP | |
VARP | VAR_POP |
分析的¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
CUME_DIST |
CUME_DIST |
|
FIRST_VALUE |
FIRST_VALUE |
|
LAG |
LAG |
|
LAST_VALUE |
LAST_VALUE |
|
LEAD |
LEAD |
|
PERCENTILE_CONT |
PERCENTILE_CONT |
|
PERCENTILE_DISC |
PERCENTILE_DISC |
|
PERCENT_RANK |
PERCENT_RANK |
照合¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
COLLATIONPROPERTY |
*定義される |
|
TERTIARY_WEIGHTS |
*定義される |
構成¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
@@DBTS |
*定義される |
|
@@LANGID |
*定義される |
|
@@LANGUAGE |
*定義される |
|
@@LOCK_TIMEOUT |
*定義される |
|
@@MAX_CONNECTIONS |
*定義される |
|
@@MAX_PRECISION |
*定義される |
|
@@NESTLEVEL |
*定義される |
|
@@OPTIONS |
*定義される |
|
@@REMSERVER |
*定義される |
|
@@SERVERNAME |
CONCAT('app.snowflake.com', CURRENT_ACCOUNT( )) |
|
@@SERVICENAME |
*定義される |
|
@@SPID |
*定義される |
|
@@TEXTSIZE |
*定義される |
|
@@VERSION |
*定義される |
CURRENT_VERSION を使用して模倣することができます |
コンバージョン¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
CAST |
CAST |
<p>値が数値でない場合は NULL を返し、そうでない場合は数値をそのまま返します。<br><、>、=、<>などの演算子を使用する場合は、 NULL が続く必要があります</p> |
CONVERT |
CONVERTをチェックしてください |
CAST と同じ動作 |
PARSE |
*定義される |
|
TRY_CAST |
TRY_CAST |
<p>値が数値でない場合は NULL を返し、そうでない場合は数値をそのまま返します。<br><、>、=、<>などの演算子を使用する場合は、 NULL が続く必要があります</p> |
*定義される |
TRY_CAST と同じ動作 |
|
TRY_PARSE |
TRY_CAST |
整数を日付やタイムスタンプとして解析する場合の動作は異なるかもしれません。 |
暗号¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
ASYMKEY_ID |
*定義される |
|
ASYMKEYPROPERTY |
*定義される |
|
CERTENCODED |
*定義される |
|
CERTPRIVATEKEY |
*定義される |
|
DECRYPTBYASYMKEY |
*定義される |
|
DECRYPTBYCERT |
*定義される |
|
DECRYPTBYKEY |
*定義される |
|
DECRYPTBYKEYAUTOASYMKEY |
*定義される |
|
DECRYPTBYKEYAUTOCERT |
*定義される |
|
DECRYPTBYPASSPHRASE |
_*to be defined_ |
DENCRYPT_RAW を使用して模倣することができます |
ENCRYPTBYASYMKEY |
*定義される |
|
ENCRYPTBYCERT |
*定義される |
|
ENCRYPTBYKEY |
*定義される |
|
ENCRYPTBYPASSPHRASE |
*定義される |
ENCRYPT_RAW を使用して模倣することができます |
HASHBYTES |
MD5, SHA1, SHA2 |
<p>現在サポートされているのは区切りハッシュのみです。必要なアルゴリズムに応じて適切なものを使用してください</p><p>MD5、32文字の16進エンコード</p><p>SHA1、160ビットを含む40文字の16進エンコード文字列</p><p>SHA2、Nビットの SHA-2メッセージダイジェストを含む16進エンコード文字列。サイズは次の通りです。</p><p>224 = SHA-224</p><p>256 = SHA-256(デフォルト)</p><p>384 = SHA-384</p><p>512 = SHA-512</p> |
IS_OBJECTSIGNED |
*定義される |
|
KEY_GUID |
*定義される |
|
KEY_ID |
*定義される |
|
KEY_NAME |
*定義される |
|
SIGNBYASYMKEY |
*定義される |
|
SIGNBYCERT |
*定義される |
|
SYMKEYPROPERTY |
*定義される |
|
VERIGYSIGNEDBYCERT |
*定義される |
カーソル¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
@@CURSOR_ROWS |
*定義される |
|
@@FETCH_STATUS |
*定義される |
|
CURSOR_STATUS |
*定義される |
データ型¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
DATALENGTH |
OCTET_LENGTH |
Snowflakeは小数バイトを使わないので、長さは常に8 * OCTET_LENGTH として計算されます |
IDENT_SEED |
*定義される |
|
IDENT_CURRENT |
*定義される |
|
IDENTITY |
*定義される |
|
IDENT_INCR |
*定義される |
|
SQL_VARIANT_PROPERTY |
*定義される |
日付と時刻¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
@@DATEFIRST |
*定義される |
|
@@LANGUAGE |
*定義される |
|
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP |
|
CURRENT_TIMEZONE |
*定義される |
|
DATEADD |
DATEADD |
|
DATEDIFF |
DATEDIFF |
|
DATEDIFF_BIG |
*定義される |
|
DATEFROMPARTS |
DATE_FROM_PARTS |
|
DATENAME |
*定義される |
<p>この関数は、日付部分と日付の2つの引数を受け取ります。文字列を返します。TSQL からSnowflakeでサポートされている日付部分は次のとおりです</p><p>year, yyyy, yy -> DATE_PART(YEAR, "$date") quarter, qq, q -> DATE_PART(QUARTER, "$date")<br>month, mm, m -> MONTHNAME( "$date")。ただし、3文字の英語の月名のみを提供します<br>dayofyear, dy, y -> DATE_PART(DAYOFYEAR, "$date")<br>day, dd, d -> DATE_PART(DAY, "$date")<br>week, wk, ww -> DATE_PART(WEEK, "$date")</p><p>weekday, dw -> DAYNAME("$date")。ただし、3文字の英語の曜日名のみを提供します<br>hour, hh -> DATE_PART(HOUR, "$date")<br>minute, n -> DATE_PART(MINUTE, "$date")<br>second, ss, s -> DATE_PART(SECOND, "$date")<br>millisecond, ms -> DATE_PART(MS, "$date") microsecond, mcs -> DATE_PART(US, "$date")<br>nanosecond, ns -> DATE_PART(NS, "$date")<br>TZoffset. tz -> 時間オフセットを取得するには特別な実装が必要です</p> |
DATEPART |
DATE_PART |
|
DATETIME2FROMPARTS |
*定義される |
|
DATETIMEFROMPARTS |
*定義される |
DATE_FROM_PARTS と TIME_FROM_PARTS の組み合わせを使用して模倣することができます |
DATETIMEOFFSETFROMPARTS |
*定義される |
|
DAY |
DAY |
|
EOMONTH |
*定義される |
LAST_DAY を使用して模倣することができます |
FORMAT |
*定義される |
TO_CHAR にマッピングします |
GETDATE |
GETDATE |
|
GETUTCDATE |
*定義される |
CONVERT_TIMEZONE を使用して模倣することができます |
ISDATE |
*定義される |
<p>TRY_TO_DATE を使用して模倣することができます</p><p>値が日付でない場合は NULL を返し、そうでない場合は日付値をそのまま返します。<br><、>、=、<>などの演算子を使用する場合は、 NULL が続く必要があります</p> |
MONTH |
MONTH |
|
SMALLDATETIMEFROMPARTS |
*定義される |
DATE_FROM_PARTS と TIME_FROM_PARTS の組み合わせを使用して模倣することができます |
SWITCHOFFSET |
*定義される |
CONVERT_TIMEZONE を使用して模倣することができます |
SYSDATETIME |
LOCALTIME |
|
SYSDATETIMEOFFSET |
*定義される |
CONVERT_TIMEZONE および LOCALTIME を使用して模倣することができます |
SYSUTCDATETIME |
*定義される |
CONVERT_TIMEZONE および LOCALTIME を使用して模倣することができます |
TIMEFROMPARTS |
TIME_FROM_PARTS |
|
TODATETIMEOFFSET |
*定義される |
CONVERT_TIMEZONE を使用して模倣することができます |
YEAR |
YEAR |
JSON ¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
ISJSON |
CHECK_JSON |
これはSnowflakeの「プレビュー機能」です |
JSON_VALUE |
*定義される |
<p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))</p><p>を使用して模倣することができます</p> |
JSON_QUERY |
*定義される |
|
JSON_MODIFY |
*定義される |
数学¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
ABS |
ABS |
|
ACOS |
ACOS |
|
ASIN |
ASIN |
|
ATAN |
ATAN |
|
ATN2 |
ATAN2 |
|
CEILING |
CEIL |
|
COS |
COS |
|
COT |
COT |
|
DEGREES |
DEGREES |
|
EXP |
EXP |
|
FLOOR |
FLOOR |
|
LOG |
LN |
|
LOG10 |
LOG |
|
PI |
PI |
|
POWER |
POWER |
|
RADIANS |
RADIANS |
|
RAND |
RANDOM |
|
ROUND |
ROUND |
|
SIGN |
SIGN |
|
SIN |
SIN |
|
SQRT |
SQRT |
|
SQUARE |
SQUARE |
論理¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
CHOOSE |
*定義される |
DECODE を使用して模倣することができます |
GREATEST |
GREATEST |
|
IIF |
IIF |
|
LEAST |
LEAST |
|
NULLIF |
NULLIF |
メタデータ¶
TransactSQL | Snowflake | Notes |
---|---|---|
TransactSQL | Snowflake | Notes |
@@PROCID | *to be defined | |
APP_NAME | *to be defined | |
APPLOCK_MODE | *to be defined | |
APPLOCK_TEST | *to be defined | |
ASSEMBLYPROPERTY | *to be defined | |
COL_LENGTH | *to be defined | |
COL_NAME | *to be defined | |
COLUMNPROPERTY | *to be defined | |
DATABASE_PRINCIPAL_ID | *to be defined | Maps to CURRENT_USER when no args |
DATABASEPROPERTYEX | *to be defined | |
DB_ID | *to be defined | We recommend changing to CURRENT_DATABASE(). If there is a need to emulate this functionality. SELECT DATE_PART(EPOCH,CREATED) FROM INFORMATION_SCHEMA.DATABASES WHERE DATABASE_NAME = 'DB' ; Can achieve something similar |
DB_NAME | *to be defined | Mostly used in the procedurename mentioned above |
FILE_ID | *to be defined | |
FILE_IDEX | *to be defined | |
FILE_NAME | *to be defined | |
FILEGROUP_ID | *to be defined | |
FILEGROUP_NAME | *to be defined | |
FILEGROUPPROPERTY | *to be defined | |
FILEPROPERTY | *to be defined | |
FULLTEXTCATALOGPROPERTY | *to be defined | |
FULLTEXTSERVICEPROPERTY | *to be defined | |
INDEX_COL | *to be defined | |
INDEXKEY_PROPERTY | *to be defined | |
INDEXPROPERTY | *to be defined | |
NEXT VALUE FOR | *to be defined | |
OBJECT_DEFINITION | *to be defined | |
OBJECT_ID | *to be defined | In most cases can be replaced. Most cases are like: IF OBJECT_ID('dbo.TABLE') IS NOT NULL DROP TABLE dbo.Table which can be replaced by a DROP TABLE IF EXISTS (this syntax is also supported in SQL SERVER). If the object_id needs to be replicated, a UDF is added depending on the second parameter of the function call. |
OBJECT_NAME | *to be defined | Can be replaced by: CREATE OR REPLACE PROCEDURE FOO() RETURNS STRING LANGUAGE JAVASCRIPT AS ' var rs = snowflake.execute({sqlText:SELECT CURRENT_DATABASE() || '.' || ? , binds:[arguments.callee.name]}); rs.next(); var procname = rs.getColumnValue(1); return procname; '; |
OBJECT_NAME(@@PROCID) | 'ObjectName' | This transformation only occurs when it is inside a DeclareStatement. ObjectName is the name of the TopLevelObject that contains the Function. |
OBJECT_SCHEMA_NAME | *to be defined | |
OBJECT_SCHEMA_NAME(@@PROCID) | :OBJECT_SCHEMA_NAME | This transformation only occurs when it is inside a DeclareStatement. |
OBJECTPROPERTY | *to be defined | |
OBJECTPROPERTYEX | *to be defined | |
ORIGINAL_DB_NAME | *to be defined | |
PARSENAME | PARSENAME_UDF | It creates a UDF to emulate the same behavior of Parsename function. |
*to be defined | ||
SCHEMA_NAME | *to be defined | |
SCOPE_IDENTITY | *to be defined | It this is needed I would recommend to use sequences, and capture the value before insert |
SERVERPROPERTY | *to be defined | |
STATS_DATE | *to be defined | |
TYPE_ID | *to be defined | |
TYPE_NAME | *to be defined | |
TYPEPROPERTY | *to be defined | |
VERSION | *to be defined |
ランキング¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
DENSE_RANK |
DENSE_RANK |
|
NTILE |
NTILE |
|
RANK |
RANK |
|
ROW_NUMBER |
ROW_NUMBER |
複製¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
PUBLISHINGSERVERNAME |
*定義される |
行セット¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
OPENDATASOURCE |
*定義される |
|
OPENJSON |
*定義される |
|
QPENQUERY |
*定義される |
|
OPENROWSET |
*定義される |
|
OPENXML |
OPENXML_UDF |
Snowflakeで同等の動作として使用されるユーザー定義関数。 |
セキュリティ¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
CERTENCODED |
*定義される |
|
CERTPRIVATEKEY |
*定義される |
|
CURRENT_USER |
CURRENT_USER |
|
DATABASE_PRINCIPAL_ID |
*定義される |
|
HAS_PERMS_BY_NAME |
*定義される |
|
IS_MEMBER |
*定義される |
クライアントが新しいロールを定義する必要があるかもしれないが、クエリ INFORMATION_SCHEMA に変更する |
IS_ROLEMEMBER |
*定義される |
<p>Snowflakeも同様の関数です</p><p>IS_ROLE_IN_SESSION</p> |
IS_SRVROLEMEMBER |
*定義される |
|
LOGINPROPERTY |
*定義される |
|
ORIGINAL_LOGIN |
*定義される |
|
PERMISSIONS |
*定義される |
|
PWDCOMPARE |
*定義される |
|
PWDENCRYPT |
*定義される |
|
SCHEMA_ID |
*定義される |
|
SCHEMA_NAME |
*定義される |
|
SESSION_USER |
*定義される |
|
SUSER_ID |
*定義される |
|
SUSER_NAME |
*定義される |
|
SUSER_SID |
*定義される |
|
SUSER_SNAME |
*定義される |
|
sys.fn_builtin_permissions |
*定義される |
|
sys.fn_get_audit_file |
*定義される |
|
sys.fn_my_permissions |
*定義される |
|
SYSTEM_USER |
*定義される |
|
USER_ID |
*定義される |
|
USER_NAME |
*定義される |
CURRENT_USER にマッピングします |
文字列¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
ASCII |
ASCII |
|
CHAR |
CHR, CHAR |
|
CHARINDEX |
CHARINDEX |
|
CONCAT |
CONCAT |
|
CONCAT_WS |
CONCAT_WS |
|
COALESCE |
COALESCE |
|
DIFFERENCE |
*定義される |
|
FORMAT |
*定義される |
|
LEFT |
LEFT |
|
LEN |
LEN |
|
LOWER |
LOWER |
|
LTRIM |
LTRIM |
|
NCHAR |
*定義される |
|
PATINDEX |
*定義される |
REGEXP_INSTR にマッピングします |
QUOTENAME |
QUOTENAME_UDF |
Quotename関数と同じ動作をエミュレートするために UDF を作成します |
REPLACE |
REPLACE |
|
REPLICATE |
REPEAT |
|
REVERSE |
REVERSE |
|
RIGHT |
RIGHT |
|
RTRIM |
RTRIM |
|
SOUNDEX |
SOUNDEX |
|
SPACE |
*定義される |
|
STR |
*定義される |
|
STRING_AGG |
*定義される |
|
STRING_ESCAPE |
*定義される |
|
STRING_SPLIT |
SPLIT_TO_TABLE |
|
STUFF |
*定義される |
CREATE OR REPLACE FUNCTION STUFF(S string, STARTPOS int, LENGTH int, NEWSTRING string) RETURNS string LANGUAGE SQL AS ' left(S, STARTPOS) |
SUBSTRING |
SUBSTRING |
|
TRANSLATE |
TRANSLATE |
|
TRIM |
TRIM |
|
UNICODE |
UNICODE |
|
UPPER |
UPPER |
システム¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
$PARTITION |
*定義される |
|
@@ERROR |
*定義される |
|
@@IDENTITY |
*定義される |
これが必要な場合は、シーケンスを使用し、挿入前に値をキャプチャすることをお勧めします |
@@PACK_RECEIVED |
*定義される |
|
@@ROWCOUNT |
*定義される |
|
@@TRANCOUNT |
*定義される |
|
BINARY_CHECKSUM |
*定義される |
|
CHECKSUM |
*定義される |
|
COMPRESS |
COMPRESS |
<p>Snowflakeのバージョンには、圧縮メソッドを示すメソッド引数があります。有効な値は以下のとおりです: SNAPPY、 ZLIB、 ZSTD、 BZ2</p><p>圧縮レベルは括弧内で指定し、負でない整数でなければなりません</p> |
CONNECTIONPROPERTY |
*定義される |
|
CONTEXT_INFO |
*定義される |
|
CURRENT_REQUEST_ID |
*定義される |
|
CURRENT_TRANSACTION_ID |
*定義される |
|
DECOMPRESS |
*定義される |
Snowflakeには、これらのための関数が2つあります: DECOMPRESS_BINARY および DECOMPRESS_STRING |
ERROR_LINE |
*定義される |
ERROR_LINE ヘルパーにマッピングします。EXEC ヘルパーはスタックトレースから例外行のプロパティを取得します。 |
ERROR_MESSAGE |
SQLERRM |
|
ERROR_NUMBER |
*定義される |
ERROR_NUMBER ヘルパーにマッピングします。EXEC ヘルパーは例外コードプロパティを取得します。 |
ERROR_PROCEDURE |
*定義される |
|
ERROR_SEVERITY |
*定義される |
|
ERROR_STATE |
*定義される |
ヘルパーは例外状態プロパティを取得します |
FORMATMESSAGE |
FORMATEMESSAGE_UDF |
FORMATMESSAGE 関数と同じ動作をエミュレートする UDF を作成しますが、いくつかの制限があります。 |
GET_FILESTREAM_TRANSACTION_CONTEXT |
*定義される |
|
GETANSINULL |
*定義される |
|
HOST_ID |
*定義される |
|
HOST_NAME |
*定義される |
|
ISNULL |
NVL |
|
ISNUMERIC |
*定義される |
直接等価なものはありませんが、カスタム UDF にマッピングすることができ、 TSQL と同じ値を返します。 |
MIN_ACTIVE_ROWVERSION |
*定義される |
|
NEWID |
*定義される |
UUID_STRING にマッピングします |
NEWSEQUENTIALID |
*定義される |
|
ROWCOUNT_BIG |
*定義される |
|
SESSION_CONTEXT |
*定義される |
|
SESSION_ID |
*定義される |
|
XACT_STATE |
*定義される |
|
システム統計¶
TransactSql |
Snowflake |
注意 |
---|---|---|
@@CONNECTIONS |
*定義される |
<p>Snowflakeの同様の関数: LOGIN_HISTORY。</p><p>指定された時間範囲内のログインイベントを返します</p> |
@@PACK_RECEIVED |
*定義される |
|
@@CPU_BUSY |
*定義される |
|
@@PACK_SENT |
*定義される |
|
@@TIMETICKS |
*定義される |
|
@@IDLE |
*定義される |
|
@@TOTAL_ERRORS |
*定義される |
|
@@IO_BUSY |
*定義される |
|
@@TOTAL_READ |
*定義される |
|
@@PACKET_ERRORS |
*定義される |
|
@@TOTAL_WRITE |
*定義される |
テキストおよび画像¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
TEXTPTR |
*定義される |
|
TEXTVALID |
*定義される |
トリガー¶
TransactSQL |
Snowflake |
注意 |
---|---|---|
COLUMNS_UPDATED |
*定義される |
|
EVENTDATA |
*定義される |
|
TRIGGER_NESTLEVEL |
*定義される |
|
UPDATE |
*定義される |
システム関数¶
ISNULL¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
NULL を指定された置換値で置き換えます。(Transact-SQL の ISNULL)。
サンプルソースパターン¶
構文¶
ISNULL ( check_expression , replacement_value )
NVL( <expr1> , <expr2> )
例¶
コード:
SELECT ISNULL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
結果:
+-----------+
|COMPANYNAME|
+-----------+
|SNOWFLAKE |
+-----------+
コード:
SELECT
NVL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
結果:
+-----------+
|COMPANYNAME|
+-----------+
|SNOWFLAKE |
+-----------+
既知の問題¶
問題は見つかりませんでした。
NEWID¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
uniqueidentifier型の一意な値を作成します。(Transact-SQL の NEWID)。
サンプルソースパターン¶
構文¶
NEWID ( )
UUID_STRING()
例¶
警告
ランタイムに一意な ID を生成するため、出力が異なる場合があります
コード:
SELECT NEWID ( ) AS ID;
結果:
+------------------------------------+
|ID |
+------------------------------------+
|47549DDF-837D-41D2-A59C-A6BC63DF7910|
+------------------------------------+
コード:
SELECT
UUID_STRING( ) AS ID;
結果:
+------------------------------------+
|ID |
+------------------------------------+
|6fd4312a-7925-4ad9-85d8-e039efd82089|
+------------------------------------+
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
NULLIF¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された2つの式が等しい場合、null値を返します。
サンプルソースパターン¶
構文¶
NULLIF ( check_expression , replacement_value )
NULLIF( <expr1> , <expr2> )
例¶
コード:
SELECT NULLIF(6,9) AS RESULT1, NULLIF(5,5) AS RESULT2;
結果:
+-------+-------+
|RESULT1|RESULT2|
+-------+-------+
|6 |null |
+-------+-------+
コード:
SELECT
NULLIF(6,9) AS RESULT1,
NULLIF(5,5) AS RESULT2;
結果:
+-------+-------+
|RESULT1|RESULT2|
+-------+-------+
|6 |null |
+-------+-------+
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
@@ROWCOUNT¶
Applies to
[x] SQL Server
説明¶
最後のステートメントによって影響を受けた行の数を返します。(Transact-SQL の@@ROWCOUNT)。
サンプルソースパターン¶
構文¶
@@ROWCOUNT
SQLROWCOUNT
例¶
コード:
CREATE TABLE table1
(
column1 INT
);
CREATE PROCEDURE procedure1
AS
BEGIN
declare @addCount int = 0;
INSERT INTO table1 (column1) VALUES (1),(2),(3);
set @addCount = @addCount + @@ROWCOUNT
select @addCount
END
;
GO
EXEC procedure1;
結果:
+-+
| |
+-+
|3|
+-+
コード:
CREATE OR REPLACE TABLE table1
(
column1 INT
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "11/13/2024", "domain": "test" }}'
;
CREATE OR REPLACE PROCEDURE procedure1 ()
RETURNS TABLE()
LANGUAGE SQL
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "11/13/2024", "domain": "test" }}'
EXECUTE AS CALLER
AS
$$
DECLARE
ADDCOUNT INT := 0;
ProcedureResultSet RESULTSET;
BEGIN
INSERT INTO table1 (column1) VALUES (1),(2),(3);
ADDCOUNT := :ADDCOUNT + SQLROWCOUNT;
ProcedureResultSet := (
select
:ADDCOUNT);
RETURN TABLE(ProcedureResultSet);
END;
$$;
CALL procedure1();
結果:
+----------+
|:ADDCOUNT |
+----------+
| 3 |
+----------+
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
FORMATMESSAGE¶
Applies to
[x] SQL Server
説明¶
sys.messages内の既存のメッセージ、または指定された文字列からメッセージを構築します。Transact-SQL の FORMATMESSAGE)。
サンプルソースパターン¶
Snowflakeは FORMATMESSAGE
関数をサポートしていないため、その動作をシミュレートするために、 FORMATMESSAGE_UDFを追加しています。
構文¶
FORMATMESSAGE ( { msg_number | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )
例¶
コード:
SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS RESULT;
結果:
RESULT|
-----------------------------------------------------------+
This is the first variable and this is the second variable.|
コード:
SELECT
--** SSC-FDM-TS0008 - FORMATMESSAGE WAS CONVERTED TO CUSTOM UDF FORMATMESSAGE_UDF AND IT MIGHT HAVE A DIFFERENT BEHAVIOR. **
FORMATMESSAGE_UDF('This is the %s and this is the %s.', ARRAY_CONSTRUCT('first variable', 'second variable')) AS RESULT;
結果:
RESULT |
-----------------------------------------------------------+
This is the first variable and this is the second variable.|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SSC-FDM-TS0008: FORMATMESSAGE 関数は UDF に変換されました。
FORMATMESSAGE_UDF¶
Snowflakeには FORMATMESSAGE
の機能を備えた関数はありません。SnowConvert は FORMATMESSAGE
の動作をエミュレートするために、以下のPython UDF を生成します。
CREATE OR REPLACE FUNCTION FORMATMESSAGE_UDF(MESSAGE STRING, ARGS ARRAY)
RETURNS STRING
LANGUAGE python
IMMUTABLE
RUNTIME_VERSION = '3.8'
HANDLER = 'format_py'
as
$$
def format_py(message,args):
return message % (*args,)
$$;
この UDF は、場合によっては正しく動作しない場合があります。
%I64d
プレースホルダーを使用するとエラーになります。代入引数の数がプレースホルダーの数と異なる場合、エラーになります。
%u
や%X
のような一部の符号なしプレースホルダーは、値を形式化するときに正しく動作しません。message_idsは扱えません。
文字列関数¶
CHAR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
ASCII テーブルのパラメーターとして送られた整数を半角文字で返します(Transact-SQL の CHAR)。
サンプルソースパターン¶
構文¶
CHAR( expression )
{CHR | CHAR} ( <input> )
String.fromCharCode( expression1, ... , expressionN )
例¶
入力:
SELECT CHAR(170) AS SMALLEST_A
出力:
SMALLEST_A|
-----------+
ª|
コード:
SELECT
CHAR(170) AS SMALLEST_A;
結果:
SMALLEST_A|
-----------+
ª|
コード:
CREATE OR REPLACE FUNCTION get_char(expression float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return String.fromCharCode( EXPRESSION );
$$;
SELECT GET_CHAR(170) SMALLEST_A;
結果:
SMALLEST_A|
-----------+
ª|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
CHARINDEX¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送信された指定された値が、マッチしたときに最初に出現するインデックスを返します(Transact-SQL の CHARINDEX)。
サンプルソースパターン¶
構文¶
CHARINDEX( expression_to_find, expression_to_search [, start] )
CHARINDEX( <expr1>, <expr2> [ , <start_pos> ] )
String.indexOf( search_value [, index] )
例¶
コード:
SELECT CHARINDEX('t', 'Customer') AS MatchPosition;
結果:
INDEX|
-----------+
33|
コード:
SELECT
CHARINDEX('t', 'Customer') AS MatchPosition;
結果:
INDEX|
-----------+
33|
注釈
Transactのインデックスは、 JavaScript が0から始まるのに対して、1から始まります。
コード:
CREATE OR REPLACE FUNCTION get_index
(
expression_to_find varchar,
expression_to_search varchar,
start_index float
)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return EXPRESSION_TO_SEARCH.indexOf(EXPRESSION_TO_FIND, START_INDEX)+1;
$$;
SELECT GET_INDEX('and', 'Give your heart and soul to me, and life will always be la vie en rose', 20) AS INDEX;
結果:
INDEX|
-----------+
33|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
COALESCE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
引数を順に評価し、最初に NULL と評価されなかった式の現在値を返します。例えば、 SELECT COALESCE(NULL, NULL, 'third_value', 'fourth_value'); は、3番目の値がnullでない最初の値であるため、3番目の値を返します。(Transact-SQL の COALESCE)。
サンプルソースパターン¶
構文¶
COALESCE ( expression [ ,...n ] )
COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
例¶
コード:
SELECT TOP 10 StartDate,
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL
FROM HumanResources.EmployeeDepartmentHistory
結果:
StartDate |FIRST_NOT_NULL|
----------+--------------+
2009-01-14| 2000-01-01|
2008-01-31| 2000-01-01|
2007-11-11| 2000-01-01|
2007-12-05| 2010-05-30|
2010-05-31| 2000-01-01|
2008-01-06| 2000-01-01|
2008-01-24| 2000-01-01|
2009-02-08| 2000-01-01|
2008-12-29| 2000-01-01|
2009-01-16| 2000-01-01|
コード:
SELECT TOP 10
StartDate,
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL
FROM
HumanResources.EmployeeDepartmentHistory;
結果:
StartDate |FIRST_NOT_NULL|
----------+--------------+
2009-01-14| 2000-01-01|
2008-01-31| 2000-01-01|
2007-11-11| 2000-01-01|
2007-12-05| 2010-05-30|
2010-05-31| 2000-01-01|
2008-01-06| 2000-01-01|
2008-01-24| 2000-01-01|
2009-02-08| 2000-01-01|
2008-12-29| 2000-01-01|
2009-01-16| 2000-01-01|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
CONCAT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列値を他の値と連結します。(Transact-SQL の CONCAT)。
サンプルソースパターン¶
構文¶
CONCAT ( string_value1, string_value2 [, string_valueN ] )
CONCAT( <expr1> [ , <exprN> ... ] )
<expr1> || <expr2> [ || <exprN> ... ]
String.concat( expression1, ..., expressionN )
例¶
コード:
SELECT CONCAT('Ray',' ','of',' ','Light') AS TITLE;
出力:
TITLE|
------------+
Ray of Light|
コード:
SELECT
CONCAT('Ray',' ','of',' ','Light') AS TITLE;
出力:
TITLE|
------------+
Ray of Light|
コード:
CREATE OR REPLACE FUNCTION concatenate_strs(strings array)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
var result = ""
STRINGS.forEach(element => result = result.concat(element));
return result;
$$;
SELECT concatenate_strs(array_construct('Ray',' ','of',' ','Light')) TITLE;
\ 出力:
TITLE|
------------+
Ray of Light|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
LEFT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された文字数の文字列の右部分を返します。(Transact-SQL の RIGHT)。
サンプルソースパターン¶
構文¶
LEFT ( character_expression , integer_expression )
LEFT ( <expr> , <length_expr> )
動作をエミュレートする関数
function LEFT(string, index){
if(index < 0){
throw new RangeError('Invalid INDEX on LEFT function');
}
return string.slice( 0, index);
}
return LEFT(STR, INDEX);
例¶
コード:
SELECT LEFT('John Smith', 5) AS FIRST_NAME;
出力:
FIRST_NAME|
----------+
John |
コード:
SELECT LEFT('John Smith', 5) AS FIRST_NAME;
出力:
FIRST_NAME|
----------+
John |
コード:
CREATE OR REPLACE FUNCTION left_str(str varchar, index float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function LEFT(string, index){
if(index < 0){
throw new RangeError('Invalid INDEX on LEFT function');
}
return string.slice( 0, index);
}
return LEFT(STR, INDEX);
$$;
SELECT LEFT_STR('John Smith', 5) AS FIRST_NAME;
\ 出力:
FIRST_NAME|
----------+
John |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
LEN¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列の長さを返します(Transact-SQL の LEN)。
サンプルソースパターン¶
構文¶
LEN( string_expression )
LENGTH( <expression> )
LEN( <expression> )
string.length
例¶
コード:
SELECT LEN('Sample text') AS [LEN];
出力:
LEN|
---+
11|
コード:
SELECT LEN('Sample text') AS LEN;
出力:
LEN|
---+
11|
コード:
CREATE OR REPLACE FUNCTION get_len(str varchar)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return STR.length;
$$;
SELECT GET_LEN('Sample text') LEN;
\ 出力:
LEN|
---+
11|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
LOWER¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列を小文字に変換します(Transact-SQL の LOWER)。
サンプルソースパターン¶
構文¶
LOWER ( character_expression )
LOWER( <expr> )
String.toLowerCase( )
例¶
コード:
SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
出力:
LOWERCASE |
-------------------------------------+
you are a prediction of the good ones|
コード:
SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
出力:
LOWERCASE |
-------------------------------------+
you are a prediction of the good ones|
コード:
CREATE OR REPLACE FUNCTION to_lower(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.toLowerCase();
$$;
SELECT TO_LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') LOWERCASE;
\ 出力:
LOWERCASE |
-------------------------------------+
you are a prediction of the good ones|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
NCHAR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた整数の UNICODE 文字を返します(Transact-SQL の NCHAR)。
サンプルソースパターン¶
構文¶
NCHAR( expression )
引数¶
式
: 整数式。
返されるタイプ¶
文字列値、受け取った入力に依存します。
例¶
SELECT NCHAR(170);
|
------------+
ª|
注釈
JavaScript におけるこの関数の等価性は CHARにドキュメントがあります。
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
REPLACE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された文字列値のすべての出現を別の文字列値に置き換えます。(Transact-SQL の REPLACE)。
サンプルソースパターン¶
構文¶
REPLACE ( string_expression , string_pattern , string_replacement )
REPLACE( <subject> , <pattern> [ , <replacement> ] )
String.replace( pattern, new_expression)
例¶
コード:
SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
出力:
COLUMNNAME |
---------------------+
Real computer science|
コード:
SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
出力:
COLUMNNAME |
---------------------+
Real computer science|
コード:
CREATE OR REPLACE FUNCTION REPLACER (str varchar, pattern varchar, new_expression varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.replace( PATTERN, NEW_EXPRESSION );
$$;
SELECT REPLACER('Real computer software', 'software', 'science') AS COLUMNNAME;
\ 出力:
COLUMNNAME |
---------------------+
Real computer science|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
REPLICATE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列値を指定回数複製します(Transact-SQL の REPLICATE)。
サンプルソースパターン¶
構文¶
REPLICATE( string_expression, number_expression )
REPEAT(<input>, <n>)
String.repeat( number_expression )
例¶
コード:
SELECT REPLICATE('Staying alive',5) AS RESULT
結果:
RESULT |
-----------------------------------------------------------------+
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
コード:
SELECT REPEAT('Staying alive',5) AS RESULT;
結果:
RESULT |
-----------------------------------------------------------------+
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
コード:
CREATE OR REPLACE FUNCTION REPEAT_STR (str varchar, occurrences float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.repeat( OCCURRENCES );
$$;
SELECT REPEAT_STR('Staying alive ', 5) AS RESULT;
結果:
RESULT |
-----------------------------------------------------------------+
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
RIGHT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された文字数の文字列の右部分を返します。(Transact-SQL の RIGHT)。
サンプルソースパターン¶
構文¶
RIGHT ( character_expression , integer_expression )
RIGHT( <expr> , <length_expr> )
動作をエミュレートするために使用される UDF
function RIGHT(string, index){
if(index< 0){
throw new RangeError('Invalid INDEX on RIGHT function');
}
return string.slice( string.length - index, string.length );
}
例¶
コード:
SELECT RIGHT('John Smith', 5) AS LAST_NAME;
出力:
LAST_NAME|
------------+
Smith|
コード:
SELECT RIGHT('John Smith', 5) AS LAST_NAME;
出力:
LAST_NAME|
------------+
Smith|
コード:
CREATE OR REPLACE FUNCTION right_str(str varchar, index float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function RIGHT(string, index){
if(index< 0){
throw new RangeError('Invalid INDEX on RIGHT function');
}
return string.slice( string.length - index, string.length );
}
return RIGHT(STR, INDEX);
$$;
SELECT RIGHT_STR('John Smith', 5) AS LAST_NAME;
\ 出力:
LAST_NAME|
------------+
Smith|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
RTRIM¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
先頭の空白を除去した文字式を返します(Transact-SQL の RTRIM)。
サンプルソースパターン¶
構文¶
RTRIM( string_expression )
RTRIM(<expr> [, <characters> ])
動作をエミュレートするために使用されるカスタム関数
function RTRIM(string){
return string.replace(/s+$/,"");
}
例¶
入力:
SELECT RTRIM('LAST TWO BLANK SPACES ') AS [RTRIM]
出力:
RTRIM |
---------------------+
LAST TWO BLANK SPACES|
コード:
SELECT RTRIM('LAST TWO BLANK SPACES ') AS RTRIM;
結果:
RTRIM |
---------------------+
LAST TWO BLANK SPACES|
コード:
CREATE OR REPLACE FUNCTION rtrim(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function RTRIM(string){
return string.replace(/s+$/,"");
}
return RTRIM( STR );
$$;
SELECT RTRIM('LAST TWO BLANK SPACES ') AS RTRIM;
結果:
RTRIM |
---------------------+
LAST TWO BLANK SPACES|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SPACE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
空白の出現回数を返します(Transact-SQL の SPACE)。
サンプルソースパターン¶
構文¶
SPACE ( integer_expression )
SPACE(<n>)
動作をエミュレートするために使用されるカスタム関数
function SPACE( occurrences ){
return ' '.repeat( occurrences );
}
例¶
入力:
SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
出力:
RESULT |
-------------+
SOME TEXT|
入力:
SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
出力:
RESULT |
-------------+
SOME TEXT|
入力:
CREATE OR REPLACE FUNCTION SPACE(occurrences float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function SPACE( occurrences ){
return ' '.repeat( occurrences );
}
return SPACE( OCCURRENCES );
$$;
SELECT CONCAT('SOME', SPACE(5), 'TEXT') RESULT;
出力:
RESULT |
-------------+
SOME TEXT|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SUBSTRING¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
先頭の空白を除去した文字式を返します(Transact-SQL の RTRIM)。
サンプルソースパターン¶
構文¶
SUBSTRING( string_expression, start, length )
SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )
SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
動作をエミュレートするために使用されるカスタム関数
string.substring( indexA [, indexB])
例¶
入力:
SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;
出力:
SOMETEXT|
--------+
bcd |
コード:
SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;
結果:
SOMETEXT|
--------+
bcd |
コード:
CREATE OR REPLACE FUNCTION REPLACER_LENGTH(str varchar, index float, length float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
var start = INDEX - 1;
var end = STR.length - (LENGTH - 1);
return STR.substring(start, end);
$$;
SELECT REPLACER_LENGTH('abcdef', 2, 3) AS SOMETEXT;
結果:
SOMETEXT|
--------+
bcd |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
UPPER¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列を大文字に変換します(Transact-SQL の UPPER)。
サンプルソースパターン¶
構文¶
UPPER( string_expression )
UPPER( <expr> )
String.toUpperCase( )
例¶
コード:
SELECT UPPER('you are a prediction of the good ones') AS [UPPER]
出力:
+-------------------------------------+
|UPPER |
+-------------------------------------+
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------+
コード:
SELECT
UPPER('you are a prediction of the good ones') AS UPPER;
出力:
+-------------------------------------+
|UPPER |
+-------------------------------------+
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------+
コード:
CREATE OR REPLACE FUNCTION to_upper(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.toUpperCase();
$$;
SELECT TO_UPPER('you are a prediction of the good ones') UPPER;
\ 出力:
UPPER |
-------------------------------------+
YOU ARE A PREDICTION OF THE GOOD ONES|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ASCII¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
ASCII テーブル上の文字の番号コードを返します(Transact-SQL の ASCII)。
サンプルソースパターン¶
構文¶
ASCII( expression )
引数¶
式
: VARCVHAR
または CHAR
式。
返されるタイプ¶
INT
。
例¶
SELECT ASCII('A') AS A , ASCII('a') AS a;
A| a|
-----------+ ----------+
65| 97|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の ASCII¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、 ASCII テーブル上の文字の番号コードを返します(JavaScript charCodeAt 関数ドキュメント)。
サンプルソースパターン¶
構文¶
string.charCodeAt( [index] )
引数¶
インデックス
(オプション): ASCII テーブルで文字を取得してコード番号を返す文字列のインデックス。このパラメーターが指定されない場合、デフォルトとして0を取ります。\
返されるタイプ¶
Int
。
例¶
CREATE OR REPLACE FUNCTION get_ascii(c char)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return C.charCodeAt();
$$;
SELECT GET_ASCII('A') A, GET_ASCII('a') a;
A| a|
-----------+ ----------+
65| 97|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
QUOTENAME¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
引用符で区切られた文字列を返します(Transact-SQL の QUOTENAME)。
サンプルソースパターン¶
構文¶
QUOTENAME( string_expression [, quote_character])
引数¶
string_expression
: 区切る文字列。
quote_character
: 文字列を区切る1文字。
返されるタイプ¶
NVARCHAR(258)
。引用符が(')、([])、(")、( () )、( >< )、({})、または(`)と異なる場合はnullになります。
例¶
SELECT QUOTENAME('Hello', '`') AS HELLO;
HELLO|
---------+
`Hello`|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の QUOTENAME¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、この関数は JavaScript では利用できませんが、定義済みの関数を使って実装することができます。
サンプルソースパターン¶
実装例¶
function QUOTENAME(string, quote){
return quote.concat(string, quote);
}
引数¶
string
: 区切る文字列式。
quote
: 区切り文字として使用される引用符。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION QUOTENAME(str varchar, quote char)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function QUOTENAME(string, quote){
const allowed_quotes = /[\']|[\"]|[(]|[)]|[\[]|[\]]|[\{]|[\}]|[\`]/;
if(!allowed_quotes.test(quote)) throw new TypeError('Invalid Quote');
return quote.concat(string, quote);
}
return QUOTENAME(STR, QUOTE);
$$;
SELECT QUOTENAME('Hola', '`') HELLO;
HELLO|
---------+
`Hello`|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
CONCAT_WS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列値と文字列値の間にセパレーターを使用した連結を行います(Transact-SQL の CONCAT_WS)。
サンプルソースパターン¶
構文¶
CONCAT_WS( separator, expression1, ... ,expressionN )
引数¶
separator
: 結合するセパレーター。
expression1, ... ,expressionN:
文字列に変換する式。
返されるタイプ¶
文字列値、受け取った入力に依存します。
例¶
SELECT CONCAT_WS(' ', 'Mariah','Carey') AS NAME;
NAME|
------------+
Mariah Carey|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の結合¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列引数をセパレーターを使用して呼び出し文字列に連結します(JavaScript 結合関数ドキュメント)。
サンプルソースパターン¶
構文¶
Array.join( separator )
引数¶
separator
: 結合する文字。
返されるタイプ¶
文字列
。
例¶
CREATE OR REPLACE FUNCTION join_strs(separator varchar, strings array)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STRINGS.join(SEPARATOR);
$$;
SELECT join_strs(' ',array_construct('Mariah','Carey')) NAME;
NAME|
------------+
Mariah Carey|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SOUNDEX¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
2つの文字列の類似性を評価するための4文字のコードを返します(Transact-SQL の SOUNDEX)。
サンプルソースパターン¶
構文¶
SOUNDEX( string_expression )
引数¶
string_expression
: 反転する文字列式。
返されるタイプ¶
パラメーターとして送られる文字列式と同じデータ型。
例¶
SELECT SOUNDEX('two') AS TWO , SOUNDEX('too') AS TOO;
TWO| TOO|
---------+---------+
T000| T000|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の SOUNDEX¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、 JavaScript は SOUNDEX アルゴリズムを実行するメソッドを提供していませんが、手動で実装することは可能です。
サンプルソースパターン¶
実装例¶
const dic = {A:0, B:1, C:2, D:3, E:0, F:1, G:2, H:0, I:0, J:2, K:2, L:4, M:5, N:5, O:0, P:1, Q:2, R:6, S:2, T:3, U:0, V:1, W:0, X:2, Y:0, Z:2};
function getCode(letter){
return dic[letter.toUpperCase()];
}
function SOUNDEX(word){
var initialCharacter = word[0].toUpperCase();
var initialCode = getCode(initialCharacter);
for(let i = 1; i < word.length; ++i) {
const letterCode = getCode(word[i]);
if (letterCode && letterCode != initialCode) {
initialCharacter += letterCode;
if(initialCharacter.length == 4) break;
}
initialCode = letterCode;
}
return initialCharacter.concat( '0'.repeat( 4 - initialCharacter.length));
}
引数¶
word
: 文字列式で SOUNDEX の等価性を取得します。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION get_soundex(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
const dic = {A:0, B:1, C:2, D:3, E:0, F:1, G:2, H:0, I:0, J:2, K:2, L:4, M:5, N:5, O:0, P:1, Q:2, R:6, S:2, T:3, U:0, V:1, W:0, X:2, Y:0, Z:2};
function getCode(letter){
return dic[letter.toUpperCase()];
}
function SOUNDEX(word){
var initialCharacter = word[0].toUpperCase();
var initialCode = getCode(initialCharacter);
for(let i = 1; i < word.length; ++i) {
const letterCode = getCode(word[i]);
if (letterCode && letterCode != initialCode) {
initialCharacter += letterCode;
if(initialCharacter.length == 4) break;
}
initialCode = letterCode;
}
return initialCharacter.concat( '0'.repeat( 4 - initialCharacter.length));
}
return SOUNDEX( STR );
$$;
SELECT GET_SOUNDEX('two') AS TWO , GET_SOUNDEX('too') AS TOO;
TWO| TOO|
---------+---------+
T000| T000|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
REVERSE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
文字列を反転します(Transact-SQL の REVERSE)。
サンプルソースパターン¶
構文¶
REVERSE( string_expression )
引数¶
string_expression
: 反転する文字列式。
返されるタイプ¶
パラメーターとして送られる文字列式と同じデータ型。
例¶
SELECT REVERSE('rotator') AS PALINDROME;
PALINDROME|
----------------+
rotator|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の反転¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、この関数は JavaScript では利用できませんが、定義済みの関数を使って実装することができます。
サンプルソースパターン¶
実装例¶
function REVERSE(string){
return string.split("").reverse().join("");
}
引数¶
string
: 反転する文字列式。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION REVERSE(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.split("").reverse().join("");
$$;
SELECT REVERSE('rotator') PALINDROME;
PALINDROME|
----------------+
rotator|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
STRING_ESCAPE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
テキストの特殊文字をエスケープし、エスケープされた文字を含むテキストを返します。(Transact-SQL の STRING_ESCAPE)。
サンプルソースパターン¶
構文¶
STRING_ESCAPE( text, type )
引数¶
text
: 文字をエスケープするテキスト。
type
: 文字をエスケープする形式型。現在、 JSON が唯一サポートされている形式です。
返されるタイプ¶
VARCHAR
。
例¶
SELECT STRING_ESCAPE('\ / \\ " ', 'json') AS [ESCAPE];
ESCAPE|
--------------------------+
\\ \/ \\\\ \" |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS のstringify¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
オブジェクトを JSON 文字列形式に変換します(JavaScript stringify関数ドキュメント)。
サンプルソースパターン¶
構文¶
JSON.stringify( value )
引数¶
value
: 変換するオブジェクト式。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION string_escape (str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return JSON.stringify( STR );
$$;
SELECT STRING_ESCAPE('\ / \\ " ') ESCAPE;
ESCAPE|
--------------------------+
\\ \/ \\\\ \" |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
TRIM¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
空白を含まない文字式を返します(Transact-SQL の TRIM)。
サンプルソースパターン¶
構文¶
TRIM( string_expression )
引数¶
string_expression:
変換する文字列式。
返されるタイプ¶
VARCHAR
または NVARCHAR
例¶
コード:
SELECT TRIM(' FIRST AND LAST TWO BLANK SPACES ') AS [TRIM];
出力:
+-------------------------------+
|TRIM |
+-------------------------------+
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------+
コード:
SELECT TRIM(' FIRST AND LAST TWO BLANK SPACES ') AS TRIM;
出力:
+-------------------------------+
|TRIM |
+-------------------------------+
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------+
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS のtrim¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた新しいパターンを使って、出現するパターンを置き換えます(JavaScript Replace関数ドキュメント)。
サンプルソースパターン¶
構文¶
String.trim( )
引数¶
この関数はパラメーターを受け取りません。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION TRIM_STR(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.trim( );
$$;
SELECT TRIM_STR(' FIRST AND LAST TWO BLANK SPACES ')TRIM
TRIM|
-------------------------------+
FIRST AND LAST TWO BLANK SPACES|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DIFFERENCE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
SOUNDEX アルゴリズムを使用して、2つの文字列の差を測定する整数を返します。(Transact-SQL の DIFFERENCE)。\ SOUNDEX アルゴリズムを実行して生成された文字列の共通文字をカウントします。
サンプルソースパターン¶
構文¶
DIFFERENCE( expression1, expression1 )
引数¶
expression1, expression2:
比較する文字列式。
返されるタイプ¶
Int
。
例¶
SELECT DIFFERENCE('Like', 'Mike');
Output |
-----------|
3 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の DIFFERENCE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、この機能は JS では利用できませんが、簡単に実装することができます。
注釈
この関数は SOUNDEX アルゴリズムの実装を必要とします。
サンプルソースパターン¶
実装例¶
function DIFFERENCE(strA, strB) {
var count = 0;
for (var i = 0; i < strA.length; i++){
if ( strA[i] == strB[i] ) count++;
}
return count;
}
引数¶
strA, strB
: SOUNDEX アルゴリズムを実行した結果の文字列式。
返されるタイプ¶
文字列
。
例¶
CREATE OR REPLACE FUNCTION SOUNDEX_DIFFERENCE(str_1 varchar, str_2 varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function DIFFERENCE(strA, strB) {
var count = 0;
for (var i = 0; i < strA.length; i++){
if ( strA[i] == strB[i] ) count++;
}
return count;
}
return DIFFERENCE(STR_1, STR_2);
$$;
SELECT SOUNDEX_DIFFERENCE(GET_SOUNDEX('two'), GET_SOUNDEX('too')) DIFFERENCE;
DIFFERENCE|
-------------+
4|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
FORMAT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定した形式とオプションのカルチャーで形式化された値を返します(Transact-SQL の FORMAT)。
サンプルソースパターン¶
構文¶
FORMAT( value, format [, culture])
引数¶
value:
形式を指定する文字列式。
format: 希望する形式。
culture(オプション): カルチャーを指定する NVarchar 引数。指定されていない場合は、現在のセッションの言語を使用します。
返されるタイプ¶
cultureパラメーターが無効な場合は NULL、それ以外の場合は次のデータ型に従います。
カテゴリ |
.NET 型 |
|
---|---|---|
数値 |
bigint |
Int64 |
数値 |
int |
Int32 |
数値 |
smallint |
Int16 |
数値 |
tinyint |
Byte |
数値 |
decimal |
SqlDecimal |
数値 |
numeric |
SqlDecimal |
数値 |
float |
Double |
数値 |
real |
Single |
数値 |
smallmoney |
10進数 |
数値 |
money |
10進数 |
日付と時刻 |
date |
DateTime |
日付と時刻 |
time |
TimeSpan |
日付と時刻 |
datetime |
DateTime |
日付と時刻 |
smalldatetime |
DateTime |
日付と時刻 |
datetime2 |
DateTime |
日付と時刻 |
datetimeoffset |
DateTimeOffset |
例¶
SELECT FORMAT(CAST('2022-01-24' AS DATE), 'd', 'en-gb') AS 'Great Britain';
GREAT BRITAIN|
---------------+
24/01/2022|
SELECT FORMAT(244900.25, 'C', 'cr-CR') AS 'CURRENCY';
CURRENCY|
---------------+
₡244,900.25|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の FORMAT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
JavaScript には、日付や整数値を形式化するさまざまな関数があります。残念ながら、これらの機能は1つのメソッドに統合されていません。
DateTime 値¶
構文¶
Intl.DateTimeFormat( format ).format( value )
引数¶
locales
(オプション): 適用する形式の文字列式。
options
(オプション): 数値式の形式のためにサポートされるさまざまなプロパティを持つオブジェクト(JavaScript NumberFormat 関数ドキュメント)。
value
: 形式を指定する数値式。
返されるタイプ¶
文字列
。
数値¶
構文¶
Intl.NumberFormat( [locales [, options]] ).format( value )
引数¶
locales
(オプション): 適用する形式の文字列式。
options
(オプション): 数値式の形式のためにサポートされるさまざまなプロパティを持つオブジェクト(JavaScript NumberFormat 関数ドキュメント)。
value
: 形式を指定する数値式。
返されるタイプ¶
文字列
。
例¶
DateTime¶
CREATE OR REPLACE FUNCTION format_date(date timestamp, format varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return new Intl.DateTimeFormat( FORMAT ).format( DATE );
$$;
SELECT FORMAT_DATE(TO_DATE('2022-01-24'), 'en-gb') GREAT_BRITAIN;
GREAT_BRITAIN|
---------------+
24/01/2022|
数値¶
CREATE OR REPLACE FUNCTION format_numeric(number float, locales varchar, options variant)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return new Intl.NumberFormat( LOCALES , OPTIONS ).format( NUMBER );
$$;
SELECT FORMAT_NUMERIC(244900.25, 'de-DE', PARSE_JSON('{ style: "currency", currency: "CRC" }')) CURRENCY;
CURRENCY|
---------------+
244.900,25 CRC|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
PATINDEX¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定した式で、最初に出現するパターンの開始位置を返します(Transact-SQL の PATINDEX)。
サンプルソースパターン¶
構文¶
PATINDEX( pattern, expression )
引数¶
pattern
: 探すパターン。
expression
: 検索する式。
返されるタイプ¶
整数。パターンが見つからない場合は0を返します。
例¶
SELECT PATINDEX( '%on%', 'No, no, non esistono più') AS [PATINDEX]
PATINDEX|
------------+
10|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の検索¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
REGEX を使用して、パターンのインデックスを検索します(JavaScript 検索関数ドキュメント)。
サンプルソースパターン¶
構文¶
String.search( regex )
引数¶
regex
: 希望するパターンにマッチする正規表現。
返されるタイプ¶
整数。パターンが文字列のどの部分とも一致しない場合は-1を返します。
例¶
CREATE OR REPLACE FUNCTION get_index_pattern(pattern varchar, str varchar)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
function GET_PATTERN(pattern, string){
return string.search(new RegExp( pattern ));
}
return GET_PATTERN(PATTERN, STR) + 1;
$$;
SELECT GET_INDEX_PATTERN('on+', 'No, no, non esistono più') PATINDEX;
PATINDEX|
------------+
10|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
STR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
数値データを文字データに変換して返します。文字データは右寄せで、長さと10進数の精度が指定されます。(Transact-SQL の STR)。
サンプルソースパターン¶
構文¶
STR ( float_expression [ , length [ , decimal ] ] )
STR_UDF( numeric_expression, number_format )
引数¶
numeric_expression
: 小数点を含むFloat式。
length
(オプション): ポイント表記、10進数、float部分を含む、返される式の長さ。
decimal
(オプション): 小数点以下の桁数です。
返されるタイプ¶
VARCHAR
。
例¶
入力:
/* 1 */
SELECT STR(123.5);
/* 2 */
SELECT STR(123.5, 2);
/* 3 */
SELECT STR(123.45, 6);
/* 4 */
SELECT STR(123.45, 6, 1);
出力:
1) 124
2) **
3) 123
4) 123.5
入力:
/* 1 */
SELECT
PUBLIC.STR_UDF(123.5, '99999');
/* 2 */
SELECT
PUBLIC.STR_UDF(123.5, '99');
/* 3 */
SELECT
PUBLIC.STR_UDF(123.45, '999999');
/* 4 */
SELECT
PUBLIC.STR_UDF(123.45, '9999.9');
出力:
1) 124
2) ##
3) 123
4) 123.5
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の STR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、この機能は JS では利用できませんが、文字列用の定義済み関数を使えば簡単に実装できます。
サンプルソースパターン¶
実装例¶
function validLength(number, max_length, float_precision) {
var float_point = number.match(/[\.][0-9]+/);
/*if the number does not have point float, checks if the float precision
* and current number are greater than max_length
*/
if(!float_point) return number.length + float_precision + 1 < max_length;
//removes the '.' and checks if there is overflow with the float_precision
return number.length - float_point[0].trim('.').length + float_precision < max_length;
}
function STR(number, max_length, float_precision) {
var number_str = number.toString();
//if the expression exceeds the max_length, returns '**'
if(number_str.length > max_length || float_precision > max_length) return '**';
if(validLength(number_str, max_length, float_precision)) {
return number.toFixed(float_precision);
}
return number.toFixed(max_length - float_precision);
}
引数¶
number
: 小数点を含むFloat式。
max_length
: ポイント表記、10進数、float部分を含む、返される式の長さ。
float_precision
: 小数点以下の桁数です。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION STR(number float, max_length float, float_precision float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function validLength(number, max_length, float_precision) {
var float_point = number.match(/[\.][0-9]+/);
if(!float_point) return number.length + float_precision + 1 < max_length;
return number.length - float_point[0].trim('.').length + float_precision < max_length;
}
function STR(number, max_length, float_precision) {
var number_str = number.toString();
if(number_str.length > max_length || float_precision > max_length) return '**';
if(validLength(number_str, max_length, float_precision)) {
return number.toFixed(float_precision);
}
return number.toFixed(max_length - float_precision);
}
return STR( NUMBER, MAX_LENGTH, FLOAT_PRECISION );
$$;
SELECT STR(12345.674, 12, 6);
STR|
--------------+
12345.674000|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
LTRIM¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
先頭の空白を除去した文字式を返します(Transact-SQL の LTRIM)。
サンプルソースパターン¶
構文¶
LTRIM( string_expression )
引数¶
string_expression:
変換する文字列式。
返されるタイプ¶
VARCHAR
または NVARCHAR
例¶
SELECT LTRIM(' FIRST TWO BLANK SPACES') AS [LTRIM]
LTRIM|
----------------------+
FIRST TWO BLANK SPACES|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の LTRIM¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、この関数は JavaScript では利用できませんが、正規表現を使って実装することができます。
サンプルソースパターン¶
実装例¶
function LTRIM(string){
return string.replace(/^s+/,"");
}
引数¶
string
: 空白を除去する文字列式。
返されるタイプ¶
文字列。
例¶
CREATE OR REPLACE FUNCTION ltrim(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
function LTRIM(string){
return string.replace(/^s+/,"");
}
return LTRIM(S TR );
$$;
SELECT LTRIM(' FIRST TWO BLANK SPACES') AS LTRIM;
LTRIM|
----------------------+
FIRST TWO BLANK SPACES|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ランキング関数¶
このセクションでは、Transact-SQL のランキング関数とSnowflake SQL および JavaScript コードの同等の機能について、 SnowFlake のストアドプロシージャでの使用に焦点を当てて説明します。
DENSE_RANK¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
この関数は、結果セットパーティション内の各行の順位を、順位値にギャップがない状態で返します。特定の行の順位は、1にその行の前にある別個の順位値の数を足したものになります。(Transact-SQL の DENSE_RANK)。
サンプルソースパターン¶
構文¶
DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
DENSE_RANK( )
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '1' COLUMN '15' OF THE SOURCE CODE STARTING AT 'OVER'. EXPECTED 'BATCH' GRAMMAR. CODE '80'. **
-- OVER ( [ <partition_by_clause> ] < order_by_clause > )
例¶
コード:
SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
結果:
BUSINESSENTITYID|NATIONALIDNUMBER|DENSE_RANK|
----------------+----------------+----------+
57|10708100 | 1|
54|109272464 | 2|
273|112432117 | 3|
4|112457891 | 4|
139|113393530 | 5|
109|113695504 | 6|
249|121491555 | 7|
132|1300049 | 8|
214|131471224 | 9|
51|132674823 | 10|
コード:
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
結果:
BUSINESSENTITYID|NATIONALIDNUMBER|DENSE_RANK|
----------------+----------------+----------+
57|10708100 | 1|
54|109272464 | 2|
273|112432117 | 3|
4|112457891 | 4|
139|113393530 | 5|
109|113695504 | 6|
249|121491555 | 7|
132|1300049 | 8|
214|131471224 | 9|
51|132674823 | 10|
関連 EWIs¶
SSC-EWI-0001: ソースコードの行に認識できないトークンがあります。
RANK¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
結果セットのパーティション内の各行の順位を返します。行の順位は1に当該行の前の順位の数を足したものになります。(Transact-SQL の RANK)。
サンプルソースパターン¶
構文¶
RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )
RANK( )
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '1' COLUMN '9' OF THE SOURCE CODE STARTING AT 'OVER'. EXPECTED 'BATCH' GRAMMAR. CODE '80'. **
-- OVER ( [ partition_by_clause ] order_by_clause )
例¶
コード:
SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
結果:
BUSINESSENTITYID|NATIONALIDNUMBER|RANK|
----------------+----------------+----+
57|10708100 | 1|
54|109272464 | 2|
273|112432117 | 3|
4|112457891 | 4|
139|113393530 | 5|
109|113695504 | 6|
249|121491555 | 7|
132|1300049 | 8|
214|131471224 | 9|
51|132674823 | 10|
コード:
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
結果:
BUSINESSENTITYID|NATIONALIDNUMBER|RANK|
----------------+----------------+----+
57|10708100 | 1|
54|109272464 | 2|
273|112432117 | 3|
4|112457891 | 4|
139|113393530 | 5|
109|113695504 | 6|
249|121491555 | 7|
132|1300049 | 8|
214|131471224 | 9|
51|132674823 | 10|
関連 EWIs¶
SSC-EWI-0001: ソースコードの行に認識できないトークンがあります。
ROW_NUMBER¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
結果セットの出力に番号を付けます。具体的には、結果セットのパーティション内の行の連番を返します。各パーティションの最初の行は1から始まります。(Transact-SQL の ROW_NUMBER)。
サンプルソースパターン¶
構文¶
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
ROW_NUMBER( )
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '2' COLUMN '5' OF THE SOURCE CODE STARTING AT 'OVER'. EXPECTED 'BATCH' GRAMMAR. CODE '80'. **
-- OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
例¶
コード:
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM HUMANRESOURCES.DEPARTMENT
出力:
RowNumber|NAME |
---------+--------------------------+
1|Document Control |
2|Engineering |
3|Executive |
4|Facilities and Maintenance|
5|Finance |
6|Human Resources |
7|Information Services |
8|Marketing |
9|Production |
10|Production Control |
11|Purchasing |
12|Quality Assurance |
13|Research and Development |
14|Sales |
15|Shipping and Receiving |
16|Tool Design |
コード:
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM
HUMANRESOURCES.DEPARTMENT;
出力:
RowNumber|NAME |
---------+--------------------------+
1|Document Control |
2|Engineering |
3|Executive |
4|Facilities and Maintenance|
5|Finance |
6|Human Resources |
7|Information Services |
8|Marketing |
9|Production |
10|Production Control |
11|Purchasing |
12|Quality Assurance |
13|Research and Development |
14|Sales |
15|Shipping and Receiving |
16|Tool Design |
関連 EWIs¶
SSC-EWI-0001: ソースコードの行に認識できないトークンがあります。
論理関数¶
IIF¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
ブール式がtrueと評価されるかfalseと評価されるかに応じて、2つの値のどちらかを返します。(Transact-SQL の IIF)。
サンプルソースパターン¶
構文¶
IIF( boolean_expression, true_value, false_value )
IFF( <condition> , <expr1> , <expr2> )
例¶
コード:
SELECT IIF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT
結果:
RESULT|
------+
FALSE|
コード:
SELECT
IFF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT;
結果:
RESULT|
------+
FALSE|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
XML 関数¶
クエリ¶
Applies to
[x] SQL Server
警告
この変換は将来的に実現されるでしょう
説明¶
xml データ型のインスタンスに対して XQuery を指定します。結果は xml 型です。このメソッドは、型付けされていない XML のインスタンスを返します。(Transact-SQL のQuery()
)
サンプルソースパターン¶
次の例は、.query( )の変換の詳細です
SQL Server¶
CREATE TABLE xml_demo(object_col XML);
INSERT INTO xml_demo (object_col)
SELECT
'<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';
INSERT INTO xml_demo (object_col)
SELECT
'<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';
SELECT
xml_demo.object_col.query('/Root/ProductDescription/Features/Warranty') as Warranty,
xml_demo.object_col.query('/Root/ProductDescription/Features/Maintenance') as Maintenance
from xml_demo;
Warranty | Maintenance |
----------------------------------------------+--------------------------------------------------------------------------------------+
<Warranty>1 year parts and labor</Warranty> | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance> |
<Warranty>1 year parts and labor</Warranty> | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance> |
Snowflake SQL ¶
CREATE OR REPLACE TABLE xml_demo (
object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;
INSERT INTO xml_demo (object_col)
SELECT
PARSE_XML(
'<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>');
INSERT INTO xml_demo (object_col)
SELECT
PARSE_XML(
'<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>');
SELECT
XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Warranty') as Warranty,
XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Maintenance') as Maintenance
from
xml_demo;
Warranty | Maintenance |
----------------------------------------------+--------------------------------------------------------------------------------------+
<Warranty>1 year parts and labor</Warranty> | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance> |
<Warranty>1 year parts and labor</Warranty> | <Maintenance>3 year parts and labor extended maintenance is available</Maintenance> |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-EWI-0036: データ型が別のデータ型に変換されました。
値¶
Applies to
[x] SQL Server
警告
この変換は将来的に実現されるでしょう
説明¶
XML に対して XQuery を実行し、 SQL 型の値を返します。このメソッドはスカラー値を返します。(Transact-SQL のvalue()
)。
サンプルソースパターン¶
次の例は、.value( )の変換の詳細です
SQL Server¶
CREATE TABLE xml_demo(object_col XML);
INSERT INTO xml_demo (object_col)
SELECT
'<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';
INSERT INTO xml_demo (object_col)
SELECT
'<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>';
SELECT
xml_demo.object_col.value('(/Root/ProductDescription/@ProductID)[1]', 'int' ) as ID,
xml_demo.object_col.value('(/Root/ProductDescription/@ProductName)[1]', 'varchar(max)' ) as ProductName,
xml_demo.object_col.value('(/Root/ProductDescription/Features/Warranty)[1]', 'varchar(max)' ) as Warranty
from xml_demo;
ID | ProductName | Warranty |
----+-------------+------------------------+
1 | Road Bike | 1 year parts and labor |
2 | Skate | 1 year parts and labor |
Snowflake SQL ¶
CREATE OR REPLACE TABLE xml_demo (
object_col VARIANT !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - XML DATA TYPE CONVERTED TO VARIANT ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"transact"}}'
;
INSERT INTO xml_demo (object_col)
SELECT
PARSE_XML(
'<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>');
INSERT INTO xml_demo (object_col)
SELECT
PARSE_XML(
'<Root>
<ProductDescription ProductID="2" ProductName="Skate">
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>');
SELECT
GET(XMLGET(object_col, 'ProductDescription'), '@ProductID') :: INT as ID,
GET(XMLGET(object_col, 'ProductDescription'), '@ProductName') :: VARCHAR as ProductName,
GET(XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Warranty', 0), '$') :: VARCHAR as Warranty
from
xml_demo;
ID | PRODUCTNAME | WARRANRTY |
----+-------------+------------------------+
1 | Road Bike | 1 year parts and labor |
2 | Skate | 1 year parts and labor |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-EWI-0036: データ型が別のデータ型に変換されました。
集計関数¶
COUNT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
この関数は、グループ内で見つかった項目の数を返します。COUNT は COUNT_BIG 関数のように動作します。これらの関数は、戻り値のデータ型が異なるだけです。COUNT は常にintデータ型の値を返します。COUNT_BIG は常にbigintデータ型の値を返します。(Transact-SQL の COUNT)。
サンプルソースパターン¶
構文¶
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
例¶
コード:
SELECT COUNT(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
結果:
TOTAL|
-----+
290|
コード:
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
結果:
TOTAL|
-----+
290|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
COUNT_BIG¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
この関数は、グループ内で見つかった項目の数を返します。COUNT_BIG は、 COUNT 関数のように動作します。これらの関数は、戻り値のデータ型が異なるだけです。COUNT_BIG は常にbigintデータ型の値を返します。COUNT は常にintデータ型の値を返します。(Transact-SQL の COUNT_BIG)。
サンプルソースパターン¶
構文¶
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )
COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
例¶
コード:
SELECT COUNT_BIG(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
結果:
TOTAL|
-----+
290|
コード:
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
結果:
TOTAL|
-----+
290|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SUM¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
式中のすべての値、または DISTINCT の値のみの合計を返します。SUM は数値列でのみ使用できます。Null値は無視されます。(Transact-SQL の SUM)。
サンプルソースパターン¶
構文¶
SUM ( [ ALL | DISTINCT ] expression )
SUM( [ DISTINCT ] <expr1> )
例¶
コード:
SELECT SUM(VACATIONHOURS) FROM HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
結果:
TOTALVACATIONHOURS|
------------------+
14678|
コード:
SELECT
SUM(VACATIONHOURS) FROM
HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
結果:
TOTALVACATIONHOURS|
------------------+
14678|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SnowConvert カスタム UDFs¶
説明¶
Transact-SQL 関数や動作の中には、Snowflakeで使用できないものや動作が異なるものがあります。これらの違いを最小限にするため、いくつかの関数は SnowConvert カスタム UDFs に置き換えられています。
これらの UDFs は、移行中に、 出力
フォルダー内の UDF ヘルパー
フォルダーに自動的に作成されます。カスタム UDF ごとに1つのファイルがあります。
OPENXML UDF¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
このカスタム UDF は、 XML ドキュメント上の行セットビューを処理するために追加されます。これは、行セットプロバイダーとして動作するため、宣言に使用されます。
このバージョンの UDF では、 オプションパラメーター と異なるノードタイプはサポートされていません。要素ノードはデフォルトで処理されます。
カスタム UDF オーバーロード¶
パラメーター
XML: XML の読み取り可能な内容を表す
VARCHAR
。PATH: 行として処理されるノードのパターンを含むvarchar。
CREATE OR REPLACE FUNCTION OPENXML_UDF(XML VARCHAR, PATH VARCHAR)
RETURNS TABLE(VALUE VARIANT)
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
SELECT VALUE from TABLE(FLATTEN(input=>XML_JSON_SIMPLE(PARSE_XML(XML)), path=>PATH))
$$;
CREATE OR REPLACE FUNCTION XML_JSON_SIMPLE(XML VARIANT)
RETURNS OBJECT
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
function toNormalJSON(xmlJSON) {
var finalres = {};
var name=xmlJSON['@'];
var res = {};
finalres[name] = res;
for(var key in xmlJSON)
{
if (key == "@")
{
res["$name"] = xmlJSON["@"];
}
else if (key == "$") {
continue;
}
else if (key.startsWith("@"))
{
// This is an attribute
res[key]=xmlJSON[key];
}
else
{
var elements = xmlJSON['$']
var value = xmlJSON[key];
res[key] = [];
if (Array.isArray(value))
{
for(var elementKey in value)
{
var currentElement = elements[elementKey];
var fixedElement = toNormalJSON(currentElement);
res[key].push(fixedElement);
}
}
else if (value === 0)
{
var fixedElement = toNormalJSON(elements);
res[key].push(fixedElement);
}
}
}
return finalres;
}
return toNormalJSON(XML);
$$;
Transact-SQL¶
DECLARE @idoc INT, @doc VARCHAR(1000);
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>';
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;
SELECT * FROM OPENXML (@idoc, '/ROOT/Customer',1)
WITH (CustomerID VARCHAR(10), ContactName VARCHAR(20));
CustomerID | ContactName
----------------------------+
VINET | Paul Henriot
LILAS | Carlos Gonzlez
Snowflake¶
注釈
以下の例は、環境変数が256バイトのストレージしかサポートしておらず、 XML のデモコードがその制限を超えて使用しているため、ストアドプロシージャに分離しています。
DECLARE
IDOC INT;
DOC VARCHAR(1000);
BlockResultSet RESULTSET;
BEGIN
DOC := '
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
<OrderDetail OrderID="10248" ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail OrderID="10283" ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>';
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0075 - TRANSLATION FOR BUILT-IN PROCEDURE 'sp_xml_preparedocument' IS NOT CURRENTLY SUPPORTED. ***/!!!
EXEC sp_xml_preparedocument :IDOC OUTPUT, :DOC;
BlockResultSet := (
SELECT
Left(value:Customer['@CustomerID'], '10') AS 'CustomerID',
Left(value:Customer['@ContactName'], '20') AS 'ContactName'
FROM
OPENXML_UDF(:IDOC, ':ROOT:Customer'));
RETURN TABLE(BlockResultSet);
END;
CustomerID | ContactName
----------------------------+
VINET | Paul Henriot
LILAS | Carlos Gonzlez
SET code = '<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail OrderID="10248" ProductID="11" Quantity="12"/>
</Order>
</Customer>
</ROOT>';
SELECT
Left(value:Customer['@CustomerID'],10) as "CustomerID",
Left(value:Customer['@ContactName'],20) as "ContactName"
FROM TABLE(OPENXML_UDF($code,'ROOT:Customer'));
CustomerID | ContactName
----------------------------+
VINET | Paul Henriot
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
SSC-EWI-TS0075: 組み込みプロシージャはサポートされていません。
STR UDF¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
このカスタム UDF は、数値データを文字データに変換します。
カスタム UDF オーバーロード¶
パラメーター¶
FLOAT_EXPR: varcharに変換する数値式。
FORMAT: 結果のvarcharの長さと小数点数を指定したvarchar式。この形式は SnowConvert で自動的に生成されます。
CREATE OR REPLACE FUNCTION PUBLIC.STR_UDF(FLOAT_EXPR FLOAT, FORMAT VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
TRIM(TRIM(SELECT TO_CHAR(FLOAT_EXPR, FORMAT)), '.')
$$;
CREATE OR REPLACE FUNCTION PUBLIC.STR_UDF(FLOAT_EXPR FLOAT)
RETURNS VARCHAR
LANGUAGE SQL
IMMUTABLE
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
STR_UDF(FLOAT_EXPR, '999999999999999999')
$$;
Transact-SQL¶
SELECT
STR(123.5) as A,
STR(123.5, 2) as B,
STR(123.45, 6) as C,
STR(123.45, 6, 1) as D;
A |
B |
C |
D |
---|---|---|---|
124 |
** |
123 |
123.5 |
Snowflake¶
SELECT
PUBLIC.STR_UDF(123.5, '99999') as A,
PUBLIC.STR_UDF(123.5, '99') as B,
PUBLIC.STR_UDF(123.45, '999999') as C,
PUBLIC.STR_UDF(123.45, '9999.9') as D;
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
関連 EWIs はありません。
SWITCHOFFSET_UDF¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
このカスタム UDF は、保存されたタイムゾーンオフセットから指定された新しいタイムゾーンオフセットに変更されたdatetimeoffset値を返すために追加されます。
カスタム UDF オーバーロード¶
パラメーター
source_timestamp: datetimeoffset(n)値に解決できる TIMESTAMP_TZ。
target_tz: タイムゾーンオフセットを表すvarchar
CREATE OR REPLACE FUNCTION PUBLIC.SWITCHOFFSET_UDF(source_timestamp TIMESTAMP_TZ, target_tz varchar)
RETURNS TIMESTAMP_TZ
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
WITH tz_values AS (
SELECT
RIGHT(source_timestamp::varchar, 5) as source_tz,
REPLACE(source_tz::varchar, ':', '') as source_tz_clean,
REPLACE(target_tz::varchar, ':', '') as target_tz_clean,
target_tz_clean::integer - source_tz_clean::integer as offset,
RIGHT(offset::varchar, 2) as tz_min,
PUBLIC.OFFSET_FORMATTER(RTRIM(offset::varchar, tz_min)) as tz_hrs,
TIMEADD( hours, tz_hrs::integer, source_timestamp ) as adj_hours,
TIMEADD( minutes, (LEFT(tz_hrs, 1) || tz_min)::integer, adj_hours::timestamp_tz ) as new_timestamp
FROM DUAL)
SELECT
(LEFT(new_timestamp, 24) || ' ' || target_tz)::timestamp_tz
FROM tz_values
$$;
-- ==========================================================================
-- Description: The function OFFSET_FORMATTER(offset_hrs varchar) serves as
-- an auxiliar function to format the offter hours and its prefix operator.
-- ==========================================================================
CREATE OR REPLACE FUNCTION PUBLIC.OFFSET_FORMATTER(offset_hrs varchar)
RETURNS varchar
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"udf"}}'
AS
$$
CASE
WHEN LEN(offset_hrs) = 0 THEN '+' || '0' || '0'
WHEN LEN(offset_hrs) = 1 THEN '+' || '0' || offset_hrs
WHEN LEN(offset_hrs) = 2 THEN
CASE
WHEN LEFT(offset_hrs, 1) = '-' THEN '-' || '0' || RIGHT(offset_hrs, 1)
ELSE '+' || offset_hrs
END
ELSE offset_hrs
END
$$;
Transact-SQL¶
SELECT
'1998-09-20 7:45:50.71345 +02:00' as fr_time,
SWITCHOFFSET('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
SELECT
'1998-09-20 7:45:50.71345 +02:00' as fr_time,
SWITCHOFFSET('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
Snowflake¶
SELECT
'1998-09-20 7:45:50.71345 +02:00' as fr_time,
PUBLIC.SWITCHOFFSET_UDF('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
fr_time cr_time
------------------------------- ----------------------------------
1998-09-20 7:45:50.71345 +02:00 1998-09-19 23:45:50.7134500 -06:00
既知の問題¶
問題は見つかりませんでした。
関連 EWIs¶
関連 EWIs はありません。
メタデータ関数¶
DB_NAME¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は指定されたデータベースの名前を返します。(Transact-SQL の DB_NAME)。
サンプルソースパターン¶
構文¶
DB_NAME ( [ database_id ] )
CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/
例¶
コード:
SELECT DB_NAME();
結果:
RESULT |
-------------------+
ADVENTUREWORKS2019 |
コード:
SELECT
CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/;
結果:
RESULT |
-------------------+
ADVENTUREWORKS2019 |
既知の問題¶
1.CURRENT_DATABASE 関数は特定のケースで動作が異なります
DB_NAME 関数は、 database_id パラメーターで呼び出すことができ、指定されたデータベースの名前を返します。パラメーターがない場合、この関数は現在のデータベース名を返します。ただし、 SnowFlake はこのパラメーターをサポートしておらず、 CURRENT_DATABASE 関数は常に現在のデータベース名を返します。
関連 EWIs¶
SSC-FDM-TS0010: CURRENT_DATABASE 関数は特定のケースで動作が異なります。
OBJECT_ID¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数はスキーマスコープオブジェクトのデータベースオブジェクト識別番号を返します。(Transact-SQL の OBJECT_ID)。
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
サンプルソースパターン¶
1.デフォルトの変換¶
IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
BEGIN
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '1' COLUMN '0' OF THE SOURCE CODE STARTING AT 'IF'. EXPECTED 'If Statement' GRAMMAR. LAST MATCHING TOKEN WAS 'null' ON LINE '1' COLUMN '48'. FAILED TOKEN WAS ')' ON LINE '1' COLUMN '52'. CODE '70'. **
--IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
--** SSC-FDM-0007 - MISSING DEPENDENT OBJECT "TABLE1" **
DROP TABLE IF EXISTS TABLE1;
END;
2.不明なデータベース¶
コード:
IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
コード:
IF (
OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
3.異なるオブジェクト名¶
コード:
IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
コード:
IF (
OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
既知の問題¶
1.OBJECT_ID_UDF 関数は特定のケースで動作が異なります
OBJECT_ID はオブジェクト識別番号を返しますが、 OBJECT_ID_UDF はブール値を返すため、 OBJECT_ID がnullでない条件で使用される場合にのみそれらは同等になります。
関連 EWIs¶
SSC-EWI-0001: ソースコードの行に認識できないトークンがあります。
SSC-FDM-0007: 依存関係のない要素
分析関数¶
LAG¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
SQL Server 2012 (11.x)以降、自己結合を使用せずに、同じ結果セット内の前の行のデータにアクセスできます。LAG は、現在の行の前にある指定された物理オフセットの行へのアクセスを提供します。SELECT ステートメントでこの解析関数を使用して、現在の行の値と前の行の値を比較します。
サンプルソースパターン¶
構文¶
LAG (scalar_expression [,offset] [,default])
OVER ( [ partition_by_clause ] order_by_clause )
COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
例¶
コード:
SELECT TOP 10
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL
FROM HumanResources.Employee E
結果:
PREVIOUS|ACTUAL|
--------+------+
NULL| 10|
10| 89|
89| 10|
10| 48|
48| 0|
0| 95|
95| 55|
55| 67|
67| 84|
84| 85|
コード:
SELECT TOP 10
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL
FROM
HumanResources.Employee E;
結果:
PREVIOUS|ACTUAL|
--------+------+
NULL| 10|
10| 89|
89| 10|
10| 48|
48| 0|
0| 95|
95| 55|
55| 67|
67| 84|
84| 85|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
データ型関数¶
DATALENGTH¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、任意の式を表現するために使用されるバイト数を返します。(Transact-SQL の DATALENGTH)。
サンプルソースパターン¶
構文¶
DATALENGTH ( expression )
OCTET_LENGTH(<string_or_binary>)
例¶
コード:
SELECT DATALENGTH('SomeString') AS SIZE;
結果:
SIZE|
----+
10|
コード:
SELECT OCTET_LENGTH('SomeString') AS SIZE;
結果:
SIZE|
----+
10|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
数学関数¶
ABS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された数値式の絶対値(正の値)を返す数学関数。(ABS
は負の値を正の値に変更します。 ABS
はゼロまたは正の値には影響しません。) (Transact-SQL の ABS)。
サンプルソースパターン¶
構文¶
ABS( expression )
ABS( <num_expr> )
Math.abs( expression )
例¶
コード:
SELECT ABS(-5);
結果:
ABS(-5)|
-------+
5|
コード:
SELECT ABS(-5);
結果:
ABS(-5)|
-------+
5|
コード:
CREATE OR REPLACE FUNCTION compute_abs(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.abs(A);
$$
;
SELECT COMPUTE_ABS(-5);
\ 結果:
COMPUTE_ABS(-5)|
---------------+
5|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
AVG¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
注釈
SnowConvert ヘルパーコードのセクションは省略されています。
この関数は、グループ内の値の平均を返します。null値は無視されます。(Transact-SQL の AVG)。
サンプルソースパターン¶
構文¶
AVG ( [ ALL | DISTINCT ] expression )
[ OVER ( [ partition_by_clause ] order_by_clause ) ]
AVG( [ DISTINCT ] <expr1> )
AVG( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
例¶
コード:
SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
結果:
AVG_VACATIONS|
-------------+
50|
コード:
SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
結果:
AVG_VACATIONS|
-------------+
50.613793|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
CEILING¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた数値より大きい/等しい、最も小さい整数を返す数学関数(Transact-SQL の CEILING)。
サンプルソースパターン¶
構文¶
CEILING( expression )
CEIL( <input_expr> [, <scale_expr> ] )
Math.ceil( expression )
例¶
コード:
SELECT CEILING(642.20);
\ 結果:
CEILING(642.20)|
---------------+
643 |
コード:
SELECT CEIL(642.20);
\ 結果:
CEIL(642.20)|
------------+
643 |
コード:
CREATE OR REPLACE FUNCTION compute_ceil(a double)
RETURNS double
LANGUAGE JAVASCRIPT
AS
$$
return Math.ceil(A);
$$
;
SELECT COMPUTE_CEIL(642.20);
\ 結果:
COMPUTE_CEIL(642.20)|
--------------------+
643|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
FLOOR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された数値式以下の最大の整数を返します。(Transact-SQL の FLOOR)。
サンプルソースパターン¶
構文¶
FLOOR ( numeric_expression )
FLOOR( <input_expr> [, <scale_expr> ] )
例¶
コード:
SELECT FLOOR (124.87) AS FLOOR;
結果:
FLOOR|
-----+
124|
コード:
SELECT FLOOR (124.87) AS FLOOR;
結果:
FLOOR|
-----+
124|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
POWER¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された式の値を指定された累乗で返します。(Transact-SQL の POWER)。
サンプルソースパターン¶
構文¶
POWER ( float_expression , y )
POW(x, y)
POWER (x, y)
例¶
コード:
SELECT POWER(2, 10.0) AS IntegerResult
結果:
IntegerResult |
--------------+
1024|
コード:
SELECT POWER(2, 10.0) AS IntegerResult;
結果:
IntegerResult |
--------------+
1024|
関連ドキュメント¶
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ROUND¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された長さまたは精度で丸められた数値を返します。(Transact-SQL の ROUND)。
サンプルソースパターン¶
構文¶
ROUND ( numeric_expression , length [ ,function ] )
ROUND( <input_expr> [, <scale_expr> ] )
例¶
コード:
SELECT ROUND(123.9994, 3) AS COL1, ROUND(123.9995, 3) AS COL2;
結果:
COL1 |COL2 |
--------+--------+
123.9990|124.0000|
コード:
SELECT ROUND(123.9994, 3) AS COL1,
ROUND(123.9995, 3) AS COL2;
結果:
COL1 | COL2 |
--------+------+
123.999|124.000|
関連ドキュメント¶
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SQRT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された浮動小数点値の平方根を返します。(Transact-SQL の SQRT)。
サンプルソースパターン¶
構文¶
SQRT ( float_expression )
SQRT(expr)
例¶
コード:
SELECT SQRT(25) AS RESULT;
結果:
RESULT|
------+
5.0|
コード:
SELECT SQRT(25) AS RESULT;
結果:
RESULT|
------+
5.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SQUARE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された浮動小数点値の平方を返します。(Transact-SQL の SQUARE)。
サンプルソースパターン¶
構文¶
SQUARE ( float_expression )
SQUARE(expr)
例¶
コード:
SELECT SQUARE (5) AS SQUARE;
結果:
SQUARE|
------+
25.0|
コード:
SELECT SQUARE (5) AS SQUARE;
結果:
SQUARE|
------+
25|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
STDEV¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
指定された式のすべての値の統計標準偏差を返します。(Transact-SQL の STDEV)。
サンプルソースパターン¶
構文¶
STDEV ( [ ALL | DISTINCT ] expression )
STDDEV( [ DISTINCT ] <expression_1> )
例¶
コード:
SELECT
STDEV(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS STDEV;
結果:
STDEV|
----------------+
28.7862150320948|
コード:
SELECT
STDDEV(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS STDEV;
結果:
STDEV|
------------+
28.786215034|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
STDEVP¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
指定された式のすべての値に対する母集団の統計標準偏差を返します。(Transact-SQL の STDVEP)。
サンプルソースパターン¶
構文¶
STDEVP ( [ ALL | DISTINCT ] expression )
STDDEV_POP( [ DISTINCT ] expression_1)
例¶
コード:
SELECT
STDEVP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
HumanResources.Employee;
結果:
STDEVP_VACATIONHOURS|
--------------------+
28.736540767245085|
コード:
SELECT
STDDEV_POP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
HumanResources.Employee;
結果:
STDEVP_VACATIONHOURS|
--------------------+
28.736540763|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
VAR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
指定された式のすべての値の統計的分散を返します。(Transact-SQL の VAR)。
サンプルソースパターン¶
構文¶
VAR ( [ ALL | DISTINCT ] expression )
VAR_SAMP( [DISTINCT] <expr1> )
例¶
コード:
SELECT
VAR(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS VAR;
結果:
VAR|
----------------+
28.7862150320948|
コード:
SELECT
VAR_SAMP(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS VAR;
結果:
VAR|
----------+
828.646176|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
POWER¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された式の値を特定の累乗で返します。\ (Transact-SQL の POWER)。
サンプルソースパターン¶
構文¶
POWER( base, exp )
引数¶
base
: 数値のベース。float式である必要があります。\ exp
: 底上げする累乗。
返されるタイプ¶
戻り値の型は入力式に依存します。
Input Type | Return Type |
---|---|
float, real | float |
decimal(p, s) | decimal(38, s) |
int, smallint, tinyint | int |
bigint | bigint |
money, smallmoney | money |
bit, char, nchar, varchar, nvarchar | float |
例¶
SELECT POWER(2, 3)
POWER(2, 3)|
-----------+
8.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の POW¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指数累乗のベースを返します。\ (JavaScript POW 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.pow( base, exp )
引数¶
base
: 数値のベース。float式である必要があります。\ exp
: 底上げする累乗。
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION compute_pow(base float, exp float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.pow(BASE, EXP);
$$
;
SELECT COMPUTE_POW(2, 3);
COMPUTE_POW(2, 3)|
-----------------+
8|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ACOS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた数値のラジアン単位のアークコサインを返す関数(Transact-SQL の ACOS)。
数学的には、アークコサインはコサインの逆関数であり、次のように定義されます:\ $$y = cos^{-1} \Leftrightarrow x = cos(y)$$
For $$y = cos^{-1}(x)$$:
- Range: $$0\leqslant y \leqslant \pi$$ or $$0^{\circ}\leqslant y \leqslant 180^{\circ}$$
- Domain: $$-1\leqslant x \leqslant 1$$
サンプルソースパターン¶
構文¶
ACOS ( expression )
引数¶
expression
: 数値の float 式。式は$$[-1,1]$$内にあります。
返されるタイプ¶
0~πの数値float式。パラメーターで送られた数値式が$$[-1, 1]$$の領域外である場合、データベースエンジンはエラーを投げます。
例¶
SELECT ACOS(-1.0);
ACOS(-1.0) |
-----------------+
3.141592653589793|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の ACOS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定した数値のアークコサインを返す関数\ (JavaScript ACOS 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.acos( expression )
引数¶
expression
: 数値式。式は$$[-1,1]$$内にあります。
返されるタイプ¶
0~πの数値式。パラメーターで送られた数値式がラジアン単位のアークコサイン$$[-1, 1]$$の範囲外の場合、関数は NaN を返します。
例¶
CREATE OR REPLACE FUNCTION compute_acos(a double)
RETURNS double
LANGUAGE JAVASCRIPT
AS
$$
return Math.acos(A);
$$
;
SELECT COMPUTE_ACOS(-1);
COMPUTE_ACOS(-1)|
---------------+
3.141592654|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ASIN¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた数値のラジアン単位のアークサインを返す関数(Transact-SQL の ASIN)。
アークサインはサインの逆関数であり、次の定義にまとめられます:\ $$y = sin^{-1} \Leftrightarrow x = sin(x)$$
For $$y = sin^{-1}(x)$$:
- Range: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ or $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$
- Domain: $$-1\leqslant x \leqslant 1$$
サンプルソースパターン¶
構文¶
ASIN( expression )
引数¶
expression
: 数値の float 式。式は$$[-1,1]$$内にあります。
返されるタイプ¶
$$-\frac{\pi}{2}$$と$$\frac{\pi}{2}$$の間の数値float式。パラメーターで送られた数値式が$$[-1, 1]$$に含まれない場合、データベースエンジンはエラーを投げます。
例¶
SELECT ASIN(0.5);
ASIN(0.5) |
------------------+
0.5235987755982989|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の ASIN¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定した数値のアークサインを返す関数\ (JavaScript ASIN 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.asin( expression )
引数¶
expression
: 数値式。式は$$[-1,1]$$内にあります。
返されるタイプ¶
$$-\frac{\pi}{2}$$と$$\frac{\pi}{2}$$の間の数値式。パラメーターで送られた数値式がアークコサイン$$[-1, 1]$$の領域外の場合、関数は NaN を返します。
例¶
CREATE OR REPLACE FUNCTION compute_asin(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.asin(A);
$$
;
SELECT COMPUTE_ASIN(0.5);
COMPUTE_ASIN(1) |
------------------+
0.5235987756|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
COS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターを通して送られた角度のコサインを返す関数(ラジアンで測定する必要があります) (Transact-SQL の COS)。
コサインは次のように定義されます:\ $$y = cos(x)$$\ Where:\ - Range: $$-1\leqslant y \leqslant 1$$\ - Domain: $$\mathbb{R}$$
サンプルソースパターン¶
構文¶
COS( expression )
引数¶
expression
: 数値の float 式。式は$$\mathbb{R}$$内にあります。
返されるタイプ¶
$$[-1, 1]$$の数値float式。
例¶
SELECT COS(PI())
COS(PI())|
---------+
-1.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の COS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
角度のコサインをラジアン単位で返す静的関数\ (JavaScript COS 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.cos( expression )
引数¶
expression:
数値式。
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION compute_cos(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.cos(ANGLE);
$$
;
SELECT COMPUTE_COS(PI());
COMPUTE_COS(PI())|
-----------------+
-1|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
COT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターを通して送られたラジアン単位の角度のコタンジェントを返します(Transact-SQL の COT)。
コサインは次のように定義されます:\ $$cot(x) = \frac{cos(x)}{sin(x)}$$または$$cot(x) = \frac{1}{tan(x)}$$\ コサインを計算するには、パラメーターがサイン関数と コサイン関数の制約に準拠する必要があります。
サンプルソースパターン¶
構文¶
COT( expression )
引数¶
expression
: 数値の float 式。式は$$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$内にあります。
返されるタイプ¶
$$\mathbb{R}$$の数値float式。
例¶
SELECT COT(1)
COT(1) |
------------------+
0.6420926159343306|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の COT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
残念ながら、 JavaScript のオブジェクト Math
は、与えられた角度のコタンジェントを計算する方法を提供していません。\ これは、次の式を使用して計算できます: $$cot(x) = \frac{cos(x)}{sin(x)}$$
サンプルソースパターン¶
実装例¶
function cot(angle){
return Math.cos(angle)/Math.sin(angle);
}
引数¶
angle:
ラジアン単位の数値式。
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION compute_cot(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
function cot(angle){
return Math.cos(angle)/Math.sin(angle);
}
return cot(ANGLE);
$$
;
SELECT COMPUTE_COT(1);
COMPUTE_COT(1); |
------------------+
0.6420926159343308|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
RADIANS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
度をラジアンに変換します。\ (Transact-SQL の RADIANS)。
サンプルソースパターン¶
構文¶
RADIANS( expression )
引数¶
expression
: 度単位での数値式。
返されるタイプ¶
パラメーターを通してラジアン単位の数値式として送られる同じデータ型。
例¶
SELECT RADIANS(180.0)
RADIANS(180) |
--------------------+
3.141592653589793116|
注釈
この関数のパラメーターをfloatにキャストします。そうしないと、上記のステートメントは PI の値の代わりに3を返します。
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の RADIANS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
JavaScript は、度を特定の角度のラジアンに変換する方法を提供していません。\ これは、次の式を使用して計算できます。$$Radians = \frac{\pi}{180^{\circ}} \cdot angle$$
サンプルソースパターン¶
実装例¶
function radians(angle){
return (Math.PI/180) * angle;
}
引数¶
angle
: 度単位でのFloat式。
返されるタイプ¶
パラメーターを通してラジアン単位の数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION RADIANS(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
function radians(angle){
return (Math.PI/180) * angle;
}
return radians(ANGLE);
$$
;
SELECT RADIANS(180);
RADIANS(180) |
-----------------+
3.141592654|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
PI¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
PI の定数値を返します\ (Transact-SQL の PI)。
サンプルソースパターン¶
構文¶
PI( )
引数¶
このメソッドはパラメーターを受け取りません。
返されるタイプ¶
Float。
例¶
CREATE PROCEDURE CIRCUMFERENCE @radius float
AS
SELECT 2 * PI() * @radius;
GO:
EXEC CIRCUMFERENCE @radius = 2;
CIRCUMFERENCE @radius = 2 |
--------------------------+
12.5663706143592|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の PI¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
PI 数(約3.141592...)を表す定数\ (JavaScript PI ドキュメント)。
サンプルソースパターン¶
構文¶
Math.PI
例¶
CREATE OR REPLACE FUNCTION circumference(radius float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
function circumference(r){
return 2 * Math.PI * r;
}
return circumference(RADIUS);
$$
;
SELECT CIRCUMFERENCE(2);
CIRCUMFERENCE(2)|
------------------+
12.566370614359172|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DEGREES¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターを通して送られたラジアン単位の角度を度数に変換します(Transact-SQL の DEGREES)。
サンプルソースパターン¶
構文¶
DEGREES( expression )
引数¶
expression
: ラジアン単位の数値 float 式。
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
SELECT DEGREES(PI())
DEGREES(PI())|
-------------+
180.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の DEGREES¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
JavaScript は、ラジアンを特定の角度の度数に変換する方法を提供していません。これは、次の式を使用して計算できます。$$Degrees = \frac{180^{\circ}}{\pi} \cdot angle$$
サンプルソースパターン¶
実装例¶
function degress(angle){
return (180/Math.PI) * angle;
}
引数¶
angle
: ラジアン単位の数値式。
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION compute_degrees(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
function degrees(angle){
return (180/Math.PI) * angle;
}
return degrees(ANGLE);
$$
;
SELECT COMPUTE_DEGREES(PI());
COMPUTE_DEGREES(PI())|
---------------------+
180.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
LOG¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
数値の自然対数を返します\ (Transact-SQL の LOG)。
サンプルソースパターン¶
構文¶
LOG( expression [, base ] )
引数¶
expression
: 数値式。
base
(オプション): 数値の対数を計算するためのベース。デフォルトはオイラーです。
返されるタイプ¶
Float。
例¶
SELECT LOG(8, 2)
LOG(8, 2) |
-----------+
3|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の LOG¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
オイラー数をベースとして対数を返します。(JavaScript LOG 関数ドキュメント)。
警告
残念ながら、 JavaScript はパラメーターを通して対数のベースを受け取るメソッドを提供していませんが、これはベースを引数で割ることで解決できます。
サンプルソースパターン¶
構文¶
Math.log( expression )
引数¶
expression
: 数値式。正の値である必要があります。それ以外の場合は NaN を返します。\
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION base_log(base float, exp float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
function getBaseLog(x, y){
return Math.log(y)/Math.log(x);
}
return getBaseLog(EXP, BASE)
$$
;
SELECT BASE_LOG(2, 8);
BASE_LOG(2, 8)|
--------------+
3|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ATAN¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた数値のラジアン単位のアークタンジェントを返す関数(Transact-SQL の ATAN)。
アークタンジェントはタンジェントの逆関数であり、次の定義にまとめられます:\ $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$
For $$y = tan^{-1}(x)$$:
- Range: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ or $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$
- Domain: $$\mathbb{R}$$
サンプルソースパターン¶
構文¶
ATAN( expression )
引数¶
expression
: 数値 float 式、またはfloatに変換可能な数値型。
返されるタイプ¶
$$-\frac{\pi}{2}$$と$$\frac{\pi}{2}$$の間の数値float式。
例¶
SELECT ATAN(-30);
ATAN(-30) |
-------------------+
-1.5374753309166493|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の ATAN¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定した数値のアークタンジェントを返す関数\ (JavaScript ATAN 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.atan( expression )
引数¶
expression
: 数値式。
返されるタイプ¶
$$-\frac{\pi}{2}$$と$$\frac{\pi}{2}$$の間の数値式。
例¶
CREATE OR REPLACE FUNCTION compute_atan(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.atan(A);
$$
;
SELECT COMPUTE_ATAN(-30);
COMPUTE_ATAN(-30)|
-----------------+
-1.537475331|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
ATN2¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
パラメーターとして送られた2つの座標のラジアン単位のアークタンジェントを返す関数(Transact-SQL の ATN2)。
For $$z = tan^{-1}(x, y)$$:
- Range: $$-\pi\leqslant z \leqslant \pi$$ or $$-180^{\circ}\leqslant z \leqslant 180^{\circ}$$
- Domain: $$\mathbb{R}$$
サンプルソースパターン¶
構文¶
ATN2( expression_1, expression_2 )
引数¶
expression1
および expression2
: 数値式。
返されるタイプ¶
$$-\pi$$と$$\pi$$の間の数値式。
例¶
SELECT ATN2(7.5, 2);
ATN2(7.5, 2) |
------------------+
1.3101939350475555|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の ATAN2¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
2つのパラメーターのアークタンジェントを返す関数\ (JavaScript ATAN2 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.atan2( expression_1, expression_2 )
引数¶
expression_1
および expression_2
: 数値式。
返されるタイプ¶
$$-\pi$$と$$\pi$$の間の数値式。
例¶
CREATE OR REPLACE FUNCTION compute_atan2(x float, y float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.atan2(X, Y);
$$
;
SELECT COMPUTE_ATAN2(7.5, 2);
ATAN2(7.5, 3) |
------------------+
1.310193935|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
LOG10¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
数値のベースを10とする対数を返します\ (Transact-SQL の LOG10)。
サンプルソースパターン¶
構文¶
LOG10( expression )
引数¶
expression
: 数値式。正でなければなりません。
返されるタイプ¶
Float。
例¶
SELECT LOG10(5)
LOG10(5) |
-----------------+
0.698970004336019|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の LOG10¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
数値のベースを10とする対数を返します\ (JavaScript LOG10 関数ドキュメント)。
サンプルソースパターン¶
構文¶
Math.log10( expression )
引数¶
expression
: 数値式。正の値である必要があります。それ以外の場合は NaN を返します。\
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
CREATE OR REPLACE FUNCTION compute_log10(argument float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.log10(ARGUMENT);
$$
;
SELECT COMPUTE_LOG10(7.5);
COMPUTE_LOG10(5)|
----------------+
0.6989700043|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
EXP¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
オイラーの指数値を返します(Transact-SQL の EXP)。
サンプルソースパターン¶
構文¶
EXP( expression )
引数¶
expression
: 数値式。
返されるタイプ¶
パラメーターを通して数値式として送られる同じデータ型。
例¶
SELECT EXP(LOG(20)), LOG(EXP(20))
GO
EXP(LOG(20)) |LOG(EXP(20)) |
---------------+----------------+
20.0| 20.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
JS の EXP¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
オイラー数を表す定数(約2.718...)\ (JavaScript オイラー数のドキュメント)。\ JavaScript では、オイラーの指数のみをサポートするTransact-SQL の代わりに、この定数を使用してさまざまな操作を行うことができます。
サンプルソースパターン¶
構文¶
Math.E
例¶
CREATE OR REPLACE FUNCTION compute_exp(x float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.E**X;
$$
;
SELECT COMPUTE_EXP(LN(20)), LN(COMPUTE_EXP(20));
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------+--------------------+
20.0| 20.0|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
変換関数¶
CONVERT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
あるデータ型の式を別のデータ型に変換します。(Transact-SQL の CONVERT)。
サンプルソースパターン¶
構文¶
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
CAST( <source_expr> AS <target_data_type> )
例¶
SELECT CONVERT(INT, '1998') as MyDate
MyDate |
-------+
1998 |
SELECT
CAST('1998' AS INT) as MyDate;
MYDATE |
-------+
1998 |
日付型をvarcharにキャスト¶
SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
RESULT |
---------+
12/08/22 |
SELECT
TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy') AS RESULT;
RESULT |
---------+
12/08/22 |
日付型をサイズ付きvarcharにキャスト¶
SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
RESULT |
---------+
07 |
SELECT
LEFT(TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy'), 2) AS RESULT;
RESULT |
---------+
07 |
サポートされている日付キャストの形式は以下のとおりです。
日付形式
コード |
形式 |
---|---|
1 |
mm/dd/yy |
2 |
yy.mm.dd |
3 |
dd/mm/yy |
4 |
dd.mm.yy |
5 |
dd-mm-yy |
6 |
dd-Mon-yy |
7 |
Mon dd, yy |
10 |
mm-dd-yy |
11 |
yy/mm/dd |
12 |
yymmdd |
23 |
yyyy-mm-dd |
101 |
mm/dd/yyyy |
102 |
yyyy.mm.dd |
103 |
dd/mm/yyyy |
104 |
dd.mm.yyyy |
105 |
dd-mm-yyyy |
106 |
dd Mon yyyy |
107 |
Mon dd, yyyy |
110 |
mm-dd-yyyy |
111 |
yyyy/mm/dd |
112 |
yyyymmdd |
時刻形式
コード |
形式 |
---|---|
8 |
hh:mm:ss |
14 |
hh:mm:ss:ff3 |
24 |
hh:mm:ss |
108 |
hh:mm:ss |
114 |
hh:mm:ss:ff3 |
日付と時刻の形式
0 |
Mon dd yyyy hh:mm AM/PM |
9 |
Mon dd yyyy hh:mm:ss:ff3 AM/PM |
13 |
dd Mon yyyy hh:mm:ss:ff3 AM/PM |
20 |
yyyy-mm-dd hh:mm:ss |
21 |
yyyy-mm-dd hh:mm:ss:ff3 |
22 |
mm/dd/yy hh:mm:ss AM/PM |
25 |
yyyy-mm-dd hh:mm:ss:ff3 |
100 |
Mon dd yyyy hh:mm AM/PM |
109 |
Mon dd yyyy hh:mm:ss:ff3 AM/PM |
113 |
dd Mon yyyy hh:mm:ss:ff3 |
120 |
yyyy-mm-dd hh:mm:ss |
121 |
yyyy-mm-dd hh:mm:ss:ff3 |
126 |
yyyy-mm-dd T hh:mm:ss:ff3 |
127 |
yyyy-mm-dd T hh:mm:ss:ff3 |
イスラム暦の日付
コード |
形式 |
---|---|
130 |
dd mmm yyyy hh:mi:ss:ff3 AM/PM |
131 |
dd mmm yyyy hh:mi:ss:ff3 AM/PM |
現在のコードとパターンが一致しない場合は、 yyyy-mm-dd hh:mm:ss
の形式になります。
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
TRY_CONVERT¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
キャストが成功した場合は、指定されたデータ型にキャストされた値を返します。それ以外の場合はnullを返します。
(SQL Server言語リファレンス TRY_CONVERT)
構文¶
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
ソースパターン¶
基本的な変換¶
この関数を変換するためには、まず TRY_CONVERT のパラメーターを確認する必要があります。
TRY_CONVERT( INT, 'test')
キャストする必要がある式が文字列の場合、Snowflakeの関数である TRY_CAST に変換されます。
TRY_CAST( 'test' AS INT)
TRY_CAST¶
TRY_CAST は TRY_CONVERT と同じ変換を共有します。
例¶
SQL Server¶
SELECT TRY_CAST('12345' AS NUMERIC) NUMERIC_RESULT,
TRY_CAST('123.45' AS DECIMAL(20,2)) DECIMAL_RESULT,
TRY_CAST('123' AS INT) INT_RESULT,
TRY_CAST('123.02' AS FLOAT) FLOAT_RESULT,
TRY_CAST('123.02' AS DOUBLE PRECISION) DOUBLE_PRECISION_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS DATE) DATE_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS DATETIME) DATETIME_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS SMALLDATETIME) SMALLDATETIME_RESULT,
TRY_CAST('12:00:00' AS TIME) TIME_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP) TIMESTAMP_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS DATETIMEOFFSET) DATETIMEOFFSET_RESULT,
TRY_CAST(1234 AS VARCHAR) VARCHAR_RESULT,
TRY_CAST(1 AS CHAR) CHAR_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS SQL_VARIANT) SQL_VARIANT_RESULT,
TRY_CAST('LINESTRING(-122.360 47.656, -122.343 47.656 )' AS GEOGRAPHY) GEOGRAPHY_RESULT;
結果は TRY_CONVERT の例と同じです。
Snowflake¶
SELECT
TRY_CAST('12345' AS NUMERIC(38, 18)) NUMERIC_RESULT,
TRY_CAST('123.45' AS DECIMAL(20,2)) DECIMAL_RESULT,
TRY_CAST('123' AS INT) INT_RESULT,
TRY_CAST('123.02' AS FLOAT) FLOAT_RESULT,
TRY_CAST('123.02' AS DOUBLE PRECISION) DOUBLE_PRECISION_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS DATE) DATE_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(3)) DATETIME_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(0)) SMALLDATETIME_RESULT,
TRY_CAST('12:00:00' AS TIME(7)) TIME_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP) TIMESTAMP_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP_TZ(7)) DATETIMEOFFSET_RESULT,
TO_VARCHAR(1234) VARCHAR_RESULT,
TO_CHAR(1) CHAR_RESULT,
TRY_CAST('2017-01-01 12:00:00' AS VARIANT) SQL_VARIANT_RESULT,
TRY_CAST('LINESTRING(-122.360 47.656, -122.343 47.656 )' AS GEOGRAPHY) GEOGRAPHY_RESULT;
既知の問題¶
データ型がVarcharやCharの場合は、異なる変換が行われます。
TRY_CONVERT(VARCHAR, 1234);
TRY_CONVERT(CHAR, 1);
Snowflakeで TRY_CAST を VARCHAR や CHAR と一緒に使うとエラーになるので、次のように変換します。
TO_VARCHAR(1234);
TO_CHAR(1);
SQL_VARIANT と GEOGRAPHY のデータ型も同様です。
TRY_CONVERT(SQL_VARIANT, '2017-01-01 12:00:00');
TRY_CONVERT(GEOGRAPHY, 'LINESTRING(-122.360 47.656, -122.343 47.656 )');
以下に変換されます
TO_VARIANT('2017-01-01 12:00:00');
TO_GEOGRAPHY('LINESTRING(-122.360 47.656, -122.343 47.656 )');
式が文字列でない場合、Snowflakeの TRY_CAST は文字列式でのみ機能するため、失敗する可能性が非常に高くなります。
この場合、別の変換が行われます
TRY_CAST(14.85 AS INT)
以下に変換されます
CAST(14.85 AS INT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/
さて、このような変換では、関数で何を行うかによって問題が発生する可能性があります。SqlServer の TRY୧_CONVERT は、変換できなかった場合はnullを返します。
これは、次のようなロジックを実行するために使用できます
SELECT
CASE
WHEN TRY_CONVERT( INT, 'Expression') IS NULL
THEN 'FAILED'
ELSE 'SUCCEDDED'
END;
TRY_CONVERT を含むこのタイプの条件は TRY_CAST で使用できますが、それを TO_VARCHAR、 TOCHAR、または CAST に変換するとどうなるでしょうか?これらの関数で変換に失敗した場合、nullを返す代わりにエラーを発生させます。
例¶
このサンプルでは、データ型が異なる TRY_CONVERT が複数あります
SQL Server¶
SELECT TRY_CONVERT(NUMERIC, '12345') NUMERIC_RESULT,
TRY_CONVERT(DECIMAL(20,2), '123.45') DECIMAL_RESULT,
TRY_CONVERT(INT, '123') INT_RESULT,
TRY_CONVERT(FLOAT, '123.02') FLOAT_RESULT,
TRY_CONVERT(DOUBLE PRECISION, '123.02') DOUBLE_PRECISION_RESULT,
TRY_CONVERT(DATE, '2017-01-01 12:00:00') DATE_RESULT,
TRY_CONVERT(DATETIME, '2017-01-01 12:00:00') DATETIME_RESULT,
TRY_CONVERT(SMALLDATETIME, '2017-01-01 12:00:00') SMALLDATETIME_RESULT,
TRY_CONVERT(TIME, '12:00:00') TIME_RESULT,
TRY_CONVERT(TIMESTAMP, '2017-01-01 12:00:00') TIMESTAMP_RESULT,
TRY_CONVERT(DATETIMEOFFSET, '2017-01-01 12:00:00') DATETIMEOFFSET_RESULT,
TRY_CONVERT(VARCHAR, 1234) VARCHAR_RESULT,
TRY_CONVERT(CHAR, 1) CHAR_RESULT,
TRY_CONVERT(SQL_VARIANT, '2017-01-01 12:00:00') SQL_VARIANT_RESULT,
TRY_CONVERT(GEOGRAPHY, 'LINESTRING(-122.360 47.656, -122.343 47.656 )') GEOGRAPHY_RESULT;
この選択を移行すると、次のような結果が得られます
Snowflake¶
SELECT
CAST('12345' AS NUMERIC(38, 18)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ NUMERIC_RESULT,
CAST('123.45' AS DECIMAL(20,2)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DECIMAL_RESULT,
CAST('123' AS INT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ INT_RESULT,
CAST('123.02' AS FLOAT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ FLOAT_RESULT,
CAST('123.02' AS DOUBLE PRECISION) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DOUBLE_PRECISION_RESULT,
CAST('2017-01-01 12:00:00' AS DATE) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DATE_RESULT,
CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(3)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DATETIME_RESULT,
CAST('2017-01-01 12:00:00' AS TIMESTAMP_NTZ(0)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ SMALLDATETIME_RESULT,
CAST('12:00:00' AS TIME(7)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ TIME_RESULT,
CAST('2017-01-01 12:00:00' AS TIMESTAMP) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ TIMESTAMP_RESULT,
CAST('2017-01-01 12:00:00' AS TIMESTAMP_TZ(7)) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/ DATETIMEOFFSET_RESULT,
TO_VARCHAR(1234) VARCHAR_RESULT,
TO_CHAR(1) CHAR_RESULT,
TO_VARIANT('2017-01-01 12:00:00') SQL_VARIANT_RESULT,
TO_GEOGRAPHY('LINESTRING(-122.360 47.656, -122.343 47.656 )') GEOGRAPHY_RESULT;
それぞれを実行し、結果を比較してみましょう。
エイリアス |
SqlServer 結果 |
Snowflake結果 |
---|---|---|
NUMERIC_RESULT |
12345 |
12345 |
DECIMAL_RESULT |
123.45 |
123.45 |
INT_RESULT |
123 |
123 |
FLOAT_RESULT |
123.02 |
123.02 |
DOUBLE_PRECISION_RESULT |
123.02 |
123.02 |
DATE_RESULT |
2017-01-01 |
2017-01-01 |
DATETIME_RESULT |
2017-01-01 12:00:00.000 |
2017-01-01 12:00:00.000 |
SMALLDATETIME_RESULT |
2017-01-01 12:00:00 |
2017-01-01 12:00:00.000 |
TIME_RESULT |
12:00:00.0000000 |
12:00:00 |
TIMESTAMP_RESULT |
0x323031372D30312D |
2017-01-01 12:00:00.000 |
DATETIMEOFFSET_RESULT |
2017-01-01 12:00:00.0000000 +00:00 |
2017-01-01 12:00:00.000 -0800 |
VARCHAR_RESULT |
1234 |
1234 |
CHAR_RESULT |
1 |
1 |
SQL_VARIANT_RESULT |
2017-01-01 12:00:00 |
"2017-01-01 12:00:00" |
GEOGRAPHY_RESULT |
0xE610000001148716D9CEF7D34740D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC0 |
{ "coordinates": [ [ -122.36, 47.656 ], [ -122.343, 47.656 ] ], "type": "LineString" } |
関連 EWIs ¶
SSC-FDM-TS0005: TRY_CONVERT/TRY_CAST を TRY_CAST に変換できませんでした。
日付と時刻の関数¶
AT TIME ZONE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
inputdate をターゲットタイムゾーンの対応する datetimeoffset 値に変換します。(Transact-SQL の AT TIME ZONE)。
サンプルソースパターン¶
構文¶
inputdate AT TIME ZONE timezone
CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> )
CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
例¶
SELECT CAST('2022-11-24 11:00:45.2000000 +00:00' as datetimeoffset) at time zone 'Alaskan Standard Time';
結果:
DATE|
------------------------------+
2022-11-24 02:00:45.200 -09:00|
SELECT
CONVERT_TIMEZONE('America/Anchorage', CAST('2022-11-24 11:00:45.2000000 +00:00' as TIMESTAMP_TZ(7)));
結果:
DATE|
------------------------------+
2022-11-24 02:00:45.200 -09:00|
コード:
SELECT current_timestamp at time zone 'Central America Standard Time';
結果:
DATE|
------------------------------+
2022-10-10 10:55:50.090 -06:00|
コード:
SELECT
CONVERT_TIMEZONE('America/Costa_Rica', CURRENT_TIMESTAMP() /*** SSC-FDM-TS0024 - CURRENT_TIMESTAMP in At Time Zone statement may have a different behavior in certain cases ***/);
結果:
DATE|
------------------------------+
2022-10-10 10:55:50.090 -06:00|
既知の問題¶
Snowflakeは、 SQL Serverがサポートしているすべてのタイムゾーンをサポートしていません。サポートされているタイムゾーンはこちらの リンク からご確認いただけます。
SELECT current_timestamp at time zone 'Turks And Caicos Standard Time';
結果:
DATE|
------------------------------+
2022-12-14 20:04:18.317 -05:00|
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0063 - TIME ZONE NOT SUPPORTED IN SNOWFLAKE ***/!!!
CURRENT_TIMESTAMP() at time zone 'Turks And Caicos Standard Time';
関連 EWIs¶
SSC-FDM-TS0024: At Time Zoneステートメントの CURRENT_TIMESTAMP は、場合によっては異なる動作をすることがあります。
SSC-EWI-TS0063: Snowflakeではタイムゾーンがサポートされていません。
DATEADD¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定された日付の指定された日付部分を表す整数を返します。(Transact-SQL の DATEPART)。
サンプルソースパターン¶
構文¶
DATEADD (datepart , number , date )
DATEADD( <date_or_time_part>, <value>, <date_or_time_expr> )
例¶
コード:
SELECT DATEADD(year,123, '20060731') as ADDDATE;
結果:
ADDDATE|
------------------------+
2129-07-31 00:00:00.000|
コード:
SELECT
DATEADD(year, 123, '20060731') as ADDDATE;
結果:
ADDDATE|
------------------------+
2129-07-31 00:00:00.000|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DATEDIFF¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定された開始日と終了日の間に横切った指定された日付部分の境界の数を(符号付き整数値として)返します。(Transact-SQL の DATEDIFF)。
サンプルソースパターン¶
構文¶
DATEDIFF ( datepart , startdate , enddate )
DATEDIFF( <date_or_time_part>, <date_or_time_expr1>, <date_or_time_expr2> )
例¶
コード:
SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
結果:
DIFF|
----+
1|
コード:
SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
結果:
DIFF|
----+
1|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DATEFROMPARTS¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定された年、月、日の値にマッピングされた 日付 の値を返します。(Transact-SQL の DATEFROMPARTS)。
サンプルソースパターン¶
構文¶
DATEFROMPARTS ( year, month, day )
DATE_FROM_PARTS( <year>, <month>, <day> )
例¶
コード:
SELECT DATEFROMPARTS ( 2010, 12, 31 ) AS RESULT;
結果:
RESULT|
----------+
2022-12-12|
コード:
SELECT DATE_FROM_PARTS ( 2010, 12, 31 ) AS RESULT;
結果:
RESULT|
----------+
2022-12-12|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DATENAME¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定された日付の指定された日付部分を表す文字列を返します。(Transact-SQL の DATENAME)。
サンプルソースパターン¶
構文¶
DATENAME ( datepart , date )
注釈
この変換は、入力に応じていくつかの関数を使用します
DATE_PART( <date_or_time_part> , <date_or_time_expr> )
MONTHNAME( <date_or_timestamp_expr> )
DAYNAME( <date_or_timestamp_expr> )
例¶
コード:
SELECT DATENAME(month, getdate()) AS DATE1,
DATENAME(day, getdate()) AS DATE2,
DATENAME(dw, GETDATE()) AS DATE3;
結果:
DATE1|DATE2|DATE3 |
-----+-----+-------+
May |3 |Tuesday|
コード:
SELECT MONTHNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE1,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE2,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE3;
結果:
DATE1|DATE2|DATE3 |
-----+-----+------+
May |Tue |Tue |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DATEPART¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定された日付の指定された日付部分を表す整数を返します。(Transact-SQL の DATEPART)。
サンプルソースパターン¶
構文¶
DATEPART ( datepart , date )
DATE_PART( <date_or_time_part> , <date_or_time_expr> )
例¶
コード:
SELECT DATEPART(YEAR, '10-10-2022') as YEAR
結果:
YEAR |
-----+
2022|
コード:
SELECT
DATE_PART(YEAR, '10-10-2022' :: TIMESTAMP) as YEAR;
結果:
YEAR |
-----+
2022|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
DAY¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定された日付の日(月内の日)を表す整数を返します。(Transact-SQL の DAY)。
サンプルソースパターン¶
構文¶
DAY ( date )
DAY( <date_or_timestamp_expr> )
例¶
コード:
SELECT DAY('10-10-2022') AS DAY
結果:
DAY |
-----+
10|
コード:
SELECT DAY('10-10-2022' :: TIMESTAMP) AS DAY;
結果:
DAY |
-----+
10|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
EOMONTH¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
この関数は、指定した日付を含む月の最終日を、オプションのオフセットを付けて返します。(Transact-SQL の EOMONTH)。
サンプルソースパターン¶
構文¶
EOMONTH ( start_date [, month_to_add ] )
LAST_DAY( <date_or_time_expr> [ , <date_part> ] )
例¶
コード:
SELECT EOMONTH (GETDATE()) AS Result;
結果:
RESULT|
----------+
2022-05-31|
コード:
SELECT
LAST_DAY(DATEADD('month', 0, CURRENT_TIMESTAMP() :: TIMESTAMP)) AS Result;
結果:
RESULT|
----------+
2022-05-31|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
GETDATE¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
現在のデータベースシステムのタイムスタンプを、データベースタイムゾーンオフセットを除いた 日付時刻 値として返します。(Transact-SQL の GETDATE)。
サンプルソースパターン¶
構文¶
GETDATE()
CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )
例¶
コード:
SELECT GETDATE() AS DATE;
結果:
DATE |
-----------------------+
2022-05-06 09:54:42.757|
コード:
SELECT CURRENT_TIMESTAMP() :: TIMESTAMP AS DATE;
結果:
DATE |
-----------------------+
2022-05-06 08:55:05.422|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
MONTH¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された 日付 の月を表す整数を返します。(Transact-SQL の MONTH)。
サンプルソースパターン¶
構文¶
MONTH( date )
MONTH ( <date_or_timestamp_expr> )
例¶
コード:
SELECT MONTH('10-10-2022') AS MONTH
結果:
MONTH|
-----+
10|
コード:
SELECT MONTH('10-10-2022' :: TIMESTAMP) AS MONTH;
結果:
MONTH|
-----+
10|
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SWITCHOFFSET¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
SWITCHOFFSET は、指定されたタイムスタンプ値を特定のタイムゾーンオフセットに調整します。これは数値によって行われます。詳細情報は SWITCHOFFSET (Transact-SQL)をご覧ください。
サンプルソースパターン¶
構文¶
UDF ヘルパーは、 SQLServer の SWITCHOFFSET 関数と同じ構文を共有し、機能的な等価性を達成します。
SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )
SWITCHOFFSET_UDF ( timestamp_tz_expression, timezoneoffset_expression )
例¶
コード:
SELECT
'1998-09-20 7:45:50.71345 +02:00' as fr_time,
SWITCHOFFSET('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
結果:
fr_time cr_time
------------------------------- ----------------------------------
1998-09-20 7:45:50.71345 +02:00 1998-09-19 23:45:50.7134500 -06:00
コード:
SELECT
'1998-09-20 7:45:50.71345 +02:00' as fr_time,
PUBLIC.SWITCHOFFSET_UDF('1998-09-20 7:45:50.71345 +02:00', '-06:00') as cr_time;
結果:
fr_time cr_time
------------------------------- ----------------------------------
1998-09-20 7:45:50.71345 +02:00 1998-09-19 23:45:50.7134500 -06:00
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SYSDATETIME¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
SQL Serverのインスタンスが実行されているコンピューターの日付と時刻を含むdatetime2(7)値を返します。(Transact-SQL の SYSDATETIME)。
サンプルソースパターン¶
構文¶
SYSDATETIME ( )
LOCALTIME()
例¶
コード:
SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
結果:
SYSTEM_DATETIME |
-----------------------+
2022-05-06 12:08:05.501|
コード:
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
結果:
SYSTEM_DATETIME |
-----------------------+
211:09:14 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
SYSUTCDATETIME¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
SQL Serverのインスタンスが実行されているコンピューターの日付と時刻を含むdatetime2(7)値を返します。(Transact-SQL の SYSUTCDATETIME)。
サンプルソースパターン¶
構文¶
SYSUTCDATETIME ( )
SYSDATE()
例¶
コード:
SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
結果:
SYSTEM_UTC_DATETIME |
---------------------------+
2023-02-02 20:59:28.0926502|
コード:
SELECT
SYSDATE() as SYS_UTC_DATETIME;
結果:
SYSTEM_UTC_DATETIME |
-------------------------+
2023-02-02 21:02:05.557 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。
YEAR¶
Applies to
[x] SQL Server
[x] Azure Synapse Analytics
説明¶
指定された 日付 の年を表す整数を返します。(Transact-SQL の YEAR)。
サンプルソースパターン¶
構文¶
YEAR( date )
YEAR ( <date_or_timestamp_expr> )
例¶
コード:
SELECT YEAR('10-10-2022') AS YEAR
結果:
YEAR |
-----+
2022 |
コード:
SELECT YEAR('10-10-2022' :: TIMESTAMP) AS YEAR;
結果:
YEAR |
-----+
2022 |
既知の問題¶
問題は見つかりませんでした。
関連 EWIs ¶
関連 EWIs はありません。