SnowConvert: Transact 기본 제공 함수¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
집계 ¶
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비트를 포함하는 16진수 인코딩 문자열SHA -2 메시지 다이제스트입니다. 크기: </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><, >, =, <> 같은 연산자 사용 시에는 반드시 a가 뒤에 와야 합니다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></p><p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))</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 |
*정의 예정 |
Rowset ¶
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에는 이를 위한 두 가지 함수 DECOMPRESS_BINARY 및 DECOMPRESS_STRING 이 있습니다. |
ERROR_LINE |
*정의 예정 |
ERROR_LINE 헬퍼에 매핑됩니다. EXEC 헬퍼는 스택 추적에서 예외 라인 속성을 캡처합니다. |
ERROR_MESSAGE |
SQLERRM |
|
ERROR_NUMBER |
*정의 예정 |
ERROR_NUMBER 헬퍼에 매핑됩니다. EXEC 헬퍼는 예외 코드 속성을 캡처합니다. |
ERROR_PROCEDURE |
*정의 예정 |
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 서버
[x] Azure 시냅스 분석
설명¶
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 서버
[x] Azure 시냅스 분석
설명¶
고유 식별자 유형의 고유 값을 생성합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 두 식이 같으면 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 서버
설명¶
마지막 문의 영향을 받은 행의 수를 반환합니다. (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 서버
설명¶
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
자리 표시자를 사용하면 오류가 throw됩니다.치환 인자의 수가 자리 표시자의 수와 다르면 오류가 throw됩니다.
%u
또는%X
와 같은 일부 서명되지 않은 자리 표시자는 값 형식을 지정할 때 올바르게 작동하지 않습니다.message_ids를 처리할 수 없습니다.
문자열 함수¶
CHAR¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 지정된 값이 일치할 때 처음 발생한 값의 인덱스를 반환합니다 (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의 인덱스는 0에서 시작하는 JavaScript 대신 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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
인자를 순서대로 평가하고 처음에 평가하지 않는 첫 번째 식의 현재 값을 NULL 로 반환합니다. 예를 들어, SELECT COALESCE(NULL, NULL, ‘third_value’, ‘fourth_value’). 세 번째 값은 null이 아닌 첫 번째 값이므로 세 번째 값을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
문자열 값을 다른 문자열 값과 연결합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 문자 수를 가진 문자열의 오른쪽 부분을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
문자열의 길이를 반환합니다(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 서버
[x] Azure 시냅스 분석
설명¶
문자열을 소문자로 변환합니다(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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 정수의 UNICODE 문자를 반환합니다(Transact-SQL 의 NCHAR).
샘플 소스 패턴¶
구문¶
NCHAR( expression )
인자¶
식
: 정수 식입니다.
Return Type¶
문자열 값으로, 수신된 입력에 따라 달라집니다.
예¶
SELECT NCHAR(170);
|
------------+
ª|
참고
JavaScript 에서 이 함수에 대한 등가성은 CHAR 에 설명되어 있습니다.
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
REPLACE¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
지정된 문자열 값의 모든 항목을 다른 문자열 값으로 바꿉니다. (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 서버
[x] Azure 시냅스 분석
설명¶
문자열 값을 지정된 횟수만큼 복제합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 문자 수를 가진 문자열의 오른쪽 부분을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
선행 공백을 제거한 후 문자 식을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
빈 공백의 개수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
선행 공백을 제거한 후 문자 식을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
문자열을 대문자로 변환합니다. (Transact-SQL 의 UPPER](https://docs.microsoft.com/en-us/sql/t-sql/functions/upper-transact-sql?view=sql-server-ver15)).
샘플 소스 패턴¶
구문¶
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 서버
[x] Azure 시냅스 분석
설명¶
ASCII 테이블에 있는 문자의 번호 코드를 반환합니다. (Transact-SQL 의 ASCII).
샘플 소스 패턴¶
구문¶
ASCII( expression )
인자¶
식
: VARCVHAR
또는 CHAR
식.
Return Type¶
INT
.
예¶
SELECT ASCII('A') AS A , ASCII('a') AS a;
A| a|
-----------+ ----------+
65| 97|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 ASCII¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 ASCII 테이블에 있는 문자의 번호 코드를 반환합니다(JavaScript charCodeAt 함수 설명서).
샘플 소스 패턴¶
구문¶
string.charCodeAt( [index] )
인자¶
인덱스
(선택 사항): 문자를 가져와 ASCII 테이블에서 해당 코드 번호를 반환할 문자열의 인덱스입니다. 이 매개 변수를 지정하지 않으면 기본적으로 0이 사용됩니다.\
Return Type¶
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 서버
[x] Azure 시냅스 분석
설명¶
따옴표로 구분된 문자열을 반환합니다. (Transact-SQL 의 QUOTENAME).
샘플 소스 패턴¶
구문¶
QUOTENAME( string_expression [, quote_character])
인자¶
string_expression
: 구분할 문자열입니다.
quote_character
: 문자열을 구분 기호로 사용할 문자 한 개입니다.
Return Type¶
NVARCHAR(258)
. 따옴표가 (‘), ([]), (“), ( () ), ( >< ), ({}) 또는 (`) 중 다른 경우 null입니다.
예¶
SELECT QUOTENAME('Hello', '`') AS HELLO;
HELLO|
---------+
`Hello`|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 QUOTENAME¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 이 함수는 JavaScript 에서 사용할 수 없지만 미리 정의된 함수를 사용하여 구현할 수 있습니다.
샘플 소스 패턴¶
구현 예시¶
function QUOTENAME(string, quote){
return quote.concat(string, quote);
}
인자¶
string
: 구분할 문자열 식입니다.
quote
: 구분 기호로 사용할 따옴표.
Return Type¶
문자열.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
문자열 값 사이에 구분 기호를 사용하여 문자열 값을 다른 값과 연결합니다. (Transact-SQL 의 CONCAT_WS).
샘플 소스 패턴¶
구문¶
CONCAT_WS( separator, expression1, ... ,expressionN )
인자¶
구분 기호
: 결합할 구분 기호입니다.
expression1, ... ,expressionN:
문자열로 찾을 식입니다.
Return Type¶
문자열 값으로, 수신된 입력에 따라 달라집니다.
예¶
SELECT CONCAT_WS(' ', 'Mariah','Carey') AS NAME;
NAME|
------------+
Mariah Carey|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 조인¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
구분 기호를 사용하여 문자열 인자를 호출 문자열에 연결합니다(JavaScript Join 함수 설명서).
샘플 소스 패턴¶
구문¶
Array.join( separator )
인자¶
구분 기호
: 조인할 문자.
Return Type¶
문자열
.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
두 문자열의 유사성을 평가하기 위해 4문자 코드를 반환합니다. (Transact-SQL 의 SOUNDEX).
샘플 소스 패턴¶
구문¶
SOUNDEX( string_expression )
인자¶
string_expression
: 반전할 문자열 식입니다.
Return Type¶
매개 변수로 전송된 문자열 식과 동일한 데이터 타입입니다.
예¶
SELECT SOUNDEX('two') AS TWO , SOUNDEX('too') AS TOO;
TWO| TOO|
---------+---------+
T000| T000|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 SOUNDEX¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 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등가물을 얻기 위한 문자열 식입니다.
Return Type¶
문자열.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
문자열을 반전시킵니다(Transact-SQL 의 REVERSE).
샘플 소스 패턴¶
구문¶
REVERSE( string_expression )
인자¶
string_expression
: 반전할 문자열 식입니다.
Return Type¶
매개 변수로 전송된 문자열 식과 동일한 데이터 타입입니다.
예¶
SELECT REVERSE('rotator') AS PALINDROME;
PALINDROME|
----------------+
rotator|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 에서 반전¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 이 함수는 JavaScript 에서 사용할 수 없지만 미리 정의된 함수를 사용하여 구현할 수 있습니다.
샘플 소스 패턴¶
구현 예시¶
function REVERSE(string){
return string.split("").reverse().join("");
}
인자¶
string
: 반전할 문자열 식입니다.
Return Type¶
문자열.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
텍스트에서 특수 문자를 이스케이프하고 이스케이프된 문자가 포함된 텍스트를 반환합니다. (Transact-SQL 의 STRING_ESCAPE).
샘플 소스 패턴¶
구문¶
STRING_ESCAPE( text, type )
인자¶
text
: 문자를 이스케이프할 텍스트입니다.
type
: 이스케이프 문자를 이스케이프할 형식 유형입니다. 현재 JSON 형식만 지원됩니다.
Return Type¶
VARCHAR
.
예¶
SELECT STRING_ESCAPE('\ / \\ " ', 'json') AS [ESCAPE];
ESCAPE|
--------------------------+
\\ \/ \\\\ \" |
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 문자열화¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
오브젝트를 JSON 문자열 형식으로 변환합니다(JavaScript stringify 함수 설명서).
샘플 소스 패턴¶
구문¶
JSON.stringify( value )
인자¶
value
: 변환할 오브젝트 식입니다.
Return Type¶
문자열.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
공백이 없는 문자 식을 반환합니다. (Transact-SQL 의 TRIM).
샘플 소스 패턴¶
구문¶
TRIM( string_expression )
인자¶
string_expression:
변환할 문자열 식입니다.
Return Type¶
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 의 트림¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 새 패턴을 사용하여 패턴의 발생 위치를 바꿉니다(JavaScript Replace 함수 설명서).
샘플 소스 패턴¶
구문¶
String.trim( )
인자¶
이 함수는 매개 변수를 수신하지 않습니다.
Return Type¶
문자열.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
SOUNDEX 알고리즘을 사용하여 두 문자열의 차이를 측정한 정수를 반환합니다. (Transact-SQL 의 DIFFERENCE).\ SOUNDEX 알고리즘을 실행하여 결과 문자열의 공통 문자를 계산합니다.
샘플 소스 패턴¶
구문¶
DIFFERENCE( expression1, expression1 )
인자¶
expression1, expression2:
비교할 문자열 식입니다.
Return Type¶
Int
.
예¶
SELECT DIFFERENCE('Like', 'Mike');
Output |
-----------|
3 |
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 DIFFERENCE¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 이 기능은 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 알고리즘을 실행하여 얻은 문자열 식입니다.
Return Type¶
문자열
.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
지정된 형식과 선택적 culture로 포맷된 값을 반환합니다. (Transact-SQL 의 FORMAT).
샘플 소스 패턴¶
구문¶
FORMAT( value, format [, culture])
인자¶
value:
형식을 지정할 문자열 식입니다.
format: 원하는 형식입니다.
culture(선택 사항): 문화를 지정하는 NVarchar 인자입니다. 지정하지 않으면 현재 세션의 언어를 사용합니다.
Return Type¶
매개 변수가 유효하지 않은 경우 NULL, 그렇지 않으면 다음 데이터 타입을 따릅니다.
카테고리 |
.NET 타입 |
|
---|---|---|
숫자 |
bigint |
Int64 |
숫자 |
int |
Int32 |
숫자 |
smallint |
Int16 |
숫자 |
tinyint |
바이트 |
숫자 |
소수점 |
SqlDecimal |
숫자 |
숫자 |
SqlDecimal |
숫자 |
float |
Double |
숫자 |
real |
Single |
숫자 |
smallmoney |
Decimal |
숫자 |
money |
Decimal |
날짜 및 시간 |
날짜 |
DateTime |
날짜 및 시간 |
시간 |
TimeSpan |
날짜 및 시간 |
날짜/시간 |
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 서버
[x] Azure 시냅스 분석
설명¶
JavaScript 에서 날짜 및 정수 값의 형식을 지정하는 다양한 함수가 있습니다. 안타깝게도 이러한 함수는 1개의 방법으로 통합되어 있지 않습니다.
DateTime 값¶
구문¶
Intl.DateTimeFormat( format ).format( value )
인자¶
locales
(선택 사항): 적용할 형식의 문자열 식입니다.
options
(선택 사항): 숫자 식의 형식에 대해 지원되는 속성이 다른 오브젝트(JavaScript NumberFormat 함수 설명서).
value
: 형식화할 숫자 식입니다.
Return Type¶
문자열
.
숫자값¶
구문¶
Intl.NumberFormat( [locales [, options]] ).format( value )
인자¶
locales
(선택 사항): 적용할 형식의 문자열 식입니다.
options
(선택 사항): 숫자 식의 형식에 대해 지원되는 속성이 다른 오브젝트(JavaScript NumberFormat 함수 설명서).
value
: 형식화할 숫자 식입니다.
Return Type¶
문자열
.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
지정된 식에서 패턴이 처음 발생한 시작 위치를 반환합니다. (Transact-SQL 의 PATINDEX).
샘플 소스 패턴¶
구문¶
PATINDEX( pattern, expression )
인자¶
pattern
: 패턴을 찾습니다.
expression
: 검색할 식입니다.
Return Type¶
정수. 패턴을 찾을 수 없으면 0을 반환합니다.
예¶
SELECT PATINDEX( '%on%', 'No, no, non esistono più') AS [PATINDEX]
PATINDEX|
------------+
10|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 검색¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
REGEX 를 사용하여 패턴의 인덱스를 찾습니다(JavaScript search 함수 설명서).
샘플 소스 패턴¶
구문¶
String.search( regex )
인자¶
regex
: 원하는 패턴과 일치하는 정규식입니다.
Return Type¶
정수. 패턴이 문자열의 어떤 부분과도 일치하지 않으면 -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 서버
[x] Azure 시냅스 분석
설명¶
숫자 데이터에서 변환된 문자 데이터를 반환합니다. 문자 데이터는 지정된 길이와 소수점 이하 전체 자릿수로 오른쪽 정렬됩니다. (Transact-SQL 의 STR).
샘플 소스 패턴¶
구문¶
STR ( float_expression [ , length [ , decimal ] ] )
STR_UDF( numeric_expression, number_format )
인자¶
numeric_expression
: 소수점이 있는 실수 식입니다.
length
(선택 사항): 반환되는 식의 길이(포인트 표기법, 소수점 및 실수 부분 포함)입니다.
decimal
(선택 사항): 소수점 이하 자릿수입니다.
Return Type¶
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 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 이 기능은 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
: 소수점이 있는 실수 식입니다.
max_length
: 반환되는 식의 길이(포인트 표기법, 소수점 및 실수 부분 포함)입니다.
float_precision
: 소수점의 오른쪽 자릿수입니다.
Return Type¶
문자열.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
선행 공백을 제거한 후 문자 식을 반환합니다. (Transact-SQL 의 LTRIM).
샘플 소스 패턴¶
구문¶
LTRIM( string_expression )
인자¶
string_expression:
변환할 문자열 식입니다.
Return Type¶
VARCHAR
또는 NVARCHAR
예¶
SELECT LTRIM(' FIRST TWO BLANK SPACES') AS [LTRIM]
LTRIM|
----------------------+
FIRST TWO BLANK SPACES|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 LTRIM¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 이 함수는 JavaScript 에서 사용할 수 없지만 정규식을 사용하여 구현할 수 있습니다.
샘플 소스 패턴¶
구현 예시¶
function LTRIM(string){
return string.replace(/^s+/,"");
}
인자¶
string
: 공백을 제거하는 문자열 식입니다.
Return Type¶
문자열.
예¶
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 없음.
순위 지정 함수¶
이 섹션에서는 SnowFlake 의 저장 프로시저에서 사용하는 것을 중심으로 Transact-SQL 의 순위 지정 함수와 Snowflake SQL 및 JavaScript 코드에서 동일한 기능에 대해 설명합니다.
DENSE_RANK¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 함수는 결과 세트 파티션 내의 각 행의 순위를 반환하며, 순위 값에는 간격이 없습니다. 특정 행의 순위는 해당 특정 행 앞에 오는 고유 순위 값의 수에 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 서버
[x] Azure 시냅스 분석
설명¶
결과 세트의 파티션 내 각 행의 순위를 반환합니다. 행의 순위는 해당 행 앞에 오는 순위 수에 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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
결과 세트의 출력을 숫자로 표시합니다. 보다 구체적으로, 각 파티션의 첫 번째 행에 대해 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 서버
[x] Azure 시냅스 분석
설명¶
부울 식이 true 또는 false으로 평가되는지 여부에 따라 두 값 중 하나를 반환합니다. (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 서버
경고
이러한 변화는 향후에 제공될 예정입니다
설명¶
xml 데이터 타입의 인스턴스에 대해 XQuery 를 지정합니다. 결과는 xml 유형입니다. 이 메서드는 타입이 지정되지 않은XML 의 인스턴스를 반환합니다. (Transact-SQL 의 Query()
)
샘플 소스 패턴 ¶
다음 예제에서는 .query( )에 대한 변환을 자세히 설명합니다
SQL 서버 ¶
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> |
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
값¶
Applies to
[x] SQL 서버
경고
이러한 변화는 향후에 제공될 예정입니다
설명¶
XML 에 대해 XQuery 를 수행하여 유형의 값을 반환합니다. 이 메서드는 스칼라 값을 반환합니다. (Transact-SQL 의 value()
).
샘플 소스 패턴 ¶
다음 예제에서는 .value()의 변환에 대해 자세히 설명합니다
SQL 서버 ¶
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 |
Known Issues¶
문제가 발견되지 않았습니다.
관련 EWIs¶
SSC-EWI-0036: 데이터 타입이 다른 데이터 타입으로 변환되었습니다.
집계 함수¶
COUNT¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 함수는 그룹에서 찾은 항목의 수를 반환합니다. 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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 함수는 그룹에서 찾은 항목의 수를 반환합니다. 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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
식에 있는 모든 값의 합계 또는 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¶
설명¶
일부 트랜잭션(SQL) 함수나 동작은 Snowflake에서 사용할 수 없거나 다르게 동작할 수 있습니다. 이러한 차이를 최소화하기 위해 일부 함수는 SnowConvert 사용자 정의 UDFs 로 대체됩니다.
이러한 UDFs 는 마이그레이션 중에 UDF Helper
폴더의 Outpu
폴더 안에 자동으로 생성됩니다. 사용자 정의 UDF 당 1개의 파일이 있습니다.
OPENXML UDF¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 사용자 정의 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 서버
[x] Azure 시냅스 분석
설명¶
이 사용자 정의 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 서버
[x] Azure 시냅스 분석
설명¶
이 사용자 정의 UDF 는 저장된 타임존 오프셋에서 지정된 새 타임존 오프셋으로 변경된 데이터타임오프셋 값을 반환하기 위해 추가되었습니다.
사용자 정의 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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 데이터베이스의 이름을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 스키마 범위 오브젝트의 데이터베이스 오브젝트 식별 번호를 반환합니다.(Transact-SQL 의 OBJECT_ID).
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
샘플 소스 패턴¶
1. Default transformation¶
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. Unknown database¶
코드:
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. Different object names¶
코드:
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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 식을 표현하는 데 사용된 바이트 수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 숫자 식의 절대(양수) 값을 반환하는 수학 함수입니다. (ABS
는 음수 값을 양수 값으로 변경합니다. ABS
는 0 또는 양수 값에 영향을 주지 않습니다.) (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);
Result:
COMPUTE_ABS(-5)|
---------------+
5|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
AVG¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
참고
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 숫자보다 크거나 같은 가장 작은 정수를 반환하는 수학 함수입니다. (Transact-SQL 의 CEILING).
샘플 소스 패턴¶
구문¶
CEILING( expression )
CEIL( <input_expr> [, <scale_expr> ] )
Math.ceil( expression )
예¶
코드:
SELECT CEILING(642.20);
Result:
CEILING(642.20)|
---------------+
643 |
코드:
SELECT CEIL(642.20);
Result:
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);
Result:
COMPUTE_CEIL(642.20)|
--------------------+
643|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
FLOOR¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
지정된 숫자 식보다 작거나 같은 가장 큰 정수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 식의 값을 지정된 거듭제곱으로 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 길이 또는 전체 자릿수로 반올림된 숫자 값을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 실수 값의 제곱 루트를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 실수 값의 제곱을 반환합니다. (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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
지정된 식에 있는 모든 값의 통계적 표준 편차를 반환합니다. (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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
지정된 식의 모든 값에 대한 모집단의 통계적 표준 편차를 반환합니다. (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 서버
[x] Azure 시냅스 분석
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
지정된 식에 있는 모든 값의 통계적 분산을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
특정 거듭제곱에 대해 지정된 식의 값을 반환합니다.\ (Transact-SQL 의 POWER).
샘플 소스 패턴¶
구문¶
POWER( base, exp )
인자¶
base
: 숫자의 밑수, 부동 소수 식이어야 합니다.\ exp
: 밑을 올리는 거듭제곱.
Return Type¶
반환 유형은 입력 식에 따라 다릅니다.
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 서버
[x] Azure 시냅스 분석
설명¶
지수 거듭제곱의 밑을 반환합니다.\ (JavaScript POW 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.pow( base, exp )
인자¶
base
: 숫자의 밑수, 부동 소수 식이어야 합니다.\ exp
: 밑을 올리는 거듭제곱.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 숫자의 라디안 단위 아크사인을 반환하는 함수 (Transact-SQL 의 ACOS).
수학적으로 아코사인은 코사인의 역함수로 다음과 같이 정의할 수 있습니다.\ $$y = cos^ {-1}\왼쪽 화살표 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 )
인자¶
식
: 숫자 float 식, 여기서 식은 $$[-1,1]$$입니다.
Return Type¶
0과 π 사이의 숫자 실수 식입니다. 매개 변수로 전송된 숫자 식이 $$[-1, 1]$$ 영역을 벗어나면 데이터베이스 엔진에서 오류를 throw합니다.
예¶
SELECT ACOS(-1.0);
ACOS(-1.0) |
-----------------+
3.141592653589793|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 ACOS¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
지정된 숫자의 아크코사인을 반환하는 함수\ (JavaScript ACOS 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.acos( expression )
인자¶
식
: 숫자 식. 여기서 식은 $$[-1,1]$$입니다.
Return Type¶
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 숫자의 라디안 단위 아크사인을 반환하는 함수 (Transact-SQL 의 ASIN).
아크사인은 사인의 역함수로, \ $$y = sin^{-1} \Leftrightarrow x = sin(x)$$ 정의에 요약되어 있습니다.
$$y = sin^{-1}(x)$$의 경우:\ - 범위: $$-\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 )
인자¶
식
: 숫자 float 식, 여기서 식은 $$[-1,1]$$입니다.
Return Type¶
$$-\frac{\pi}{2}$$ ㅁ $$\frac{\pi}{2}$$ 사이의 숫자 부동소수점 식. 매개 변수로 전송된 숫자 식이 $$[-1, 1]$$에 없으면 데이터베이스 엔진에서 오류를 throw합니다.
예¶
SELECT ASIN(0.5);
ASIN(0.5) |
------------------+
0.5235987755982989|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 ASIN¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
지정된 숫자의 아크사인을 반환하는 함수\ (JavaScript ASIN 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.asin( expression )
인자¶
식
: 숫자 식. 여기서 식은 $$[-1,1]$$입니다.
Return Type¶
$$-\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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수를 통해 전송된 각도의 코사인을 반환하는 함수(라디안 단위로 측정해야 함) (Transact-SQL 의 COS).
코사인의 정의:\ $$y = cos(x)$$\ 여기서:\ - Range: $$-1\leqslant y \leqslant 1$$\ - 영역: $$\mathbb{R}$$
샘플 소스 패턴¶
구문¶
COS( expression )
인자¶
expression
: 숫자 float 식, 여기서 식은 $$\mathbb{R}$$에 있습니다.
Return Type¶
$$[-1, 1]$$의 숫자 실수 식입니다.
예¶
SELECT COS(PI())
COS(PI())|
---------+
-1.0|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 COS¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
각도의 코사인을 라디안 단위로 반환하는 정적 함수(JavaScript COS 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.cos( expression )
인자¶
식:
숫자 표현식.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수를 통해 전송된 각도의 코탄젠트를 라디안 단위로 반환합니다(Transact-SQL 의 COT).
코사인의 정의: \ $$cot(x) =\frac {cos(x)}{sin(x)} $$ 또는 $$cot(x) =\frac {1}{tan(x)} $$\ 코사인을 계산하려면 매개 변수가 사인 및 cosine 함수의 제약 조건을 준수해야 합니다.
샘플 소스 패턴¶
구문¶
COT( expression )
인자¶
expression
: 숫자 float 식, 여기서 식은 $$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$에 있습니다.
Return Type¶
$$\mathbb{R}$$의 숫자 float 식입니다.
예¶
SELECT COT(1)
COT(1) |
------------------+
0.6420926159343306|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 COT¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
안타깝게도 JavaScript 의 Math
오브젝트는 지정된 각도의 코탄젠트를 계산하는 방법을 제공하지 않습니다.\ 이는 $$cot(x) = \frac{cos(x)}{sin(x)}$$ 방정식을 사용하여 계산할 수 있습니다
샘플 소스 패턴¶
구현 예시¶
function cot(angle){
return Math.cos(angle)/Math.sin(angle);
}
인자¶
각도:
라디안 단위의 숫자 식입니다.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
도를 라디안으로 변환합니다.\ (Transact-SQL 의 RADIANS).
샘플 소스 패턴¶
구문¶
RADIANS( expression )
인자¶
식
: 도 단위의 숫자 식입니다.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 라디안 단위의 숫자 식과 동일합니다.
예¶
SELECT RADIANS(180.0)
RADIANS(180) |
--------------------+
3.141592653589793116|
참고
이 함수의 매개 변수를 float로 형변환하면 위의 문은 PI 값 대신 3을 반환합니다.
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 RADIANS¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
JavaScript 는 지정된 각도의 각도를 라디안으로 변환하는 방법을 제공하지 않습니다.\ 이는 $$Radians = \frac{\pi}{180^{\circ}} \cdot angle$$ 공식을 사용하여 계산할 수 있습니다
샘플 소스 패턴¶
구현 예시¶
function radians(angle){
return (Math.PI/180) * angle;
}
인자¶
각도
: 도 단위의 부동 소수점 식입니다.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 라디안 단위의 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
PI 의 값을 반환합니다.\ (Transact-SQL 의 PI).
샘플 소스 패턴¶
구문¶
PI( )
인자¶
이 메서드는 매개 변수를 수신하지 않습니다.
Return Type¶
부동소수점.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수를 통해 전송된 라디안 단위의 각도를 도 단위로 변환합니다(Transact-SQL 의 DEGREES).
샘플 소스 패턴¶
구문¶
DEGREES( expression )
인자¶
식
: 라디안 단위의 숫자 float 식입니다.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
SELECT DEGREES(PI())
DEGREES(PI())|
-------------+
180.0|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 DEGREES¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
JavaScript 는 라디안을 지정된 각도의 각도로 변환하는 방법을 제공하지 않습니다.\ 이 각도는 $$Degrees = \frac{180^{\circ}}{\pi} \cdot angle$$ 공식을 사용하여 계산할 수 있습니다.
샘플 소스 패턴¶
구현 예시¶
function degress(angle){
return (180/Math.PI) * angle;
}
인자¶
각도
: 라디안 단위의 숫자 식입니다.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
숫자의 자연 로그를 반환합니다\ (Transact-SQL 의 LOG).
샘플 소스 패턴¶
구문¶
LOG( expression [, base ] )
인자¶
식
: 숫자 식입니다.
base
(선택 사항): 숫자의 로그를 계산하는 밑으로, 기본값은 오일러입니다.
Return Type¶
부동소수점.
예¶
SELECT LOG(8, 2)
LOG(8, 2) |
-----------+
3|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 LOG¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
오일러의 수를 기본으로 사용하여 로그를 반환합니다. (JavaScript LOG 함수 설명서).
경고
안타깝게도 JavaScript 는 매개 변수를 통해 로그의 밑을 받는 메서드를 제공하지 않지만, 밑을 인자로 나누면 해결할 수 있습니다.
샘플 소스 패턴¶
구문¶
Math.log( expression )
인자¶
식
: 숫자 식입니다. 양수여야 하며, 그렇지 않으면NaN 을 반환합니다.\
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 숫자의 라디안 단위의 아크탄젠트를 반환하는 함수 (Transact-SQL 의 ATAN).
아크탄젠트는 탄젠트의 역함수로, $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$ 정의에 요약되어 있습니다.\
$$y = tan^{-1}(x)$$의 경우:\ - 범위: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ 또는 $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - 영역: $$\mathbb{R}$$
샘플 소스 패턴¶
구문¶
ATAN( expression )
인자¶
expression
: 숫자 float 식 또는 float로 변환할 수 있는 숫자 유형입니다.
Return Type¶
$$-\frac{\pi}{2}$$ ㅁ $$\frac{\pi}{2}$$ 사이의 숫자 부동소수점 식.
예¶
SELECT ATAN(-30);
ATAN(-30) |
-------------------+
-1.5374753309166493|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 ATAN¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
지정된 숫자의 아크탄젠트를 반환하는 함수\ (JavaScript ATAN 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.atan( expression )
인자¶
식
: 숫자 식입니다.
Return Type¶
$$-\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 서버
[x] Azure 시냅스 분석
설명¶
매개 변수로 전송된 두 좌표의 라디안 단위의 아크탄젠트를 반환하는 함수(Transact-SQL 의 ATN2).
$$z = tan^{-1}(x, y)$$의 경우:\ - 범위: $$-\pi\leqslant z \leqslant \pi$$ 또는 $$-180^{\circ}\leqslant z \leqslant 180^{\circ}$$\ - 영역: $$\mathbb{R}$$
샘플 소스 패턴¶
구문¶
ATN2( expression_1, expression_2 )
인자¶
expression1
및 expression2
: 숫자 식입니다.
Return Type¶
$$-\pi$$ ~ $$\pi$$ 사이의 숫자 식입니다.
예¶
SELECT ATN2(7.5, 2);
ATN2(7.5, 2) |
------------------+
1.3101939350475555|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 ATAN2¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
두 매개 변수의 아크탄젠트를 반환하는 함수\ (JavaScript ATAN2 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.atan2( expression_1, expression_2 )
인자¶
expression_1
및 expression_2
: 숫자 표현식.
Return Type¶
$$-\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 서버
[x] Azure 시냅스 분석
설명¶
숫자의 10차 로그를 반환합니다\ (Transact-SQL 의 LOG10).
샘플 소스 패턴¶
구문¶
LOG10( expression )
인자¶
expression
: 숫자 식, 양수여야 합니다.
Return Type¶
부동소수점.
예¶
SELECT LOG10(5)
LOG10(5) |
-----------------+
0.698970004336019|
알려진 문제 ¶
문제가 발견되지 않았습니다.
관련 EWIs ¶
관련 EWIs 없음.
JS 의 LOG10¶
Applies to
[x] SQL 서버
[x] Azure 시냅스 분석
설명¶
숫자에서 밑의 10 로그를 반환합니다\ (JavaScript LOG10 함수 설명서).
샘플 소스 패턴¶
구문¶
Math.log10( expression )
인자¶
식
: 숫자 식입니다. 양수여야 하며, 그렇지 않으면NaN 을 반환합니다.\
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
오일러 수의 지수값을 반환합니다(Transact-SQL 의 EXP).
샘플 소스 패턴¶
구문¶
EXP( expression )
인자¶
식
: 숫자 식입니다.
Return Type¶
매개 변수를 통해 전송된 데이터 타입이 숫자 식과 동일합니다.
예¶
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 서버
[x] Azure 시냅스 분석
설명¶
오일러의 수를 나타내는 상수(약 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 서버
[x] Azure 시냅스 분석
설명¶
한 데이터 타입의 식을 다른 데이터 타입으로 변환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
형변환이 성공하면 지정된 데이터 타입으로 형변환된 값을 반환하고, 그렇지 않으면 null을 반환합니다.
(SQL Server Language Reference TRY_CONVERT)
구문¶
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
소스 패턴¶
기본 변환¶
이 함수를 변환하려면 먼저 TRY_CONVERT 의 매개 변수를 확인해야 합니다.
TRY_CONVERT( INT, 'test')
형변환해야 하는 식이 문자열인 경우 TRY_CAST 로 변환되며, 이는 Snowflake의 함수입니다.
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;
Known Issues¶
데이터 타입이 Varchar 또는 Char인 경우 다르게 변환됩니다.
TRY_CONVERT(VARCHAR, 1234);
TRY_CONVERT(CHAR, 1);
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 )');
식이 문자열이 아닌 경우 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 또는 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 서버
[x] Azure 시냅스 분석
설명¶
_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|
Known Issues¶
Snowflake는 SQL 서버가 지원하는 모든 타임존을 지원하지 않습니다. 지원되는 타임존은 이 링크에서 확인할 수 있습니다.
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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 날짜의 지정된 날짜 부분을 나타내는 정수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 시작 날짜와 종료 날짜 사이에 교차한 지정된 날짜 부분 경계의 개수(부호 있는 정수 값)를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 연도, 월, 일 값에 매핑되는 날짜 값을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 날짜의 지정된 날짜 부분을 나타내는 문자 문자열을 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 날짜의 지정된 날짜 부분을 나타내는 정수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 날짜의 요일(월)을 나타내는 정수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
이 함수는 지정된 날짜가 포함된 월의 마지막 날을 오프셋 옵션과 함께 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
데이터베이스 타임존 오프셋 없이 현재 데이터베이스 시스템 타임스탬프를 datetime 값으로 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
지정된 _date_의 월을 나타내는 정수를 반환합니다. (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 서버
[x] Azure 시냅스 분석
설명¶
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 서버
[x] Azure 시냅스 분석
설명¶
SQL 서버의 인스턴스가 실행 중인 컴퓨터의 날짜와 시간이 포함된 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 서버
[x] Azure 시냅스 분석
설명¶
SQL 서버의 인스턴스가 실행 중인 컴퓨터의 날짜와 시간이 포함된 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 서버
[x] Azure 시냅스 분석
설명¶
지정된 _date_의 연도를 나타내는 정수를 반환합니다. (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 없음.