SnowConvert AI - SQL Server-Azure Synapse - Funções internas¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Para mais informações sobre funções internas e seus equivalentes no Snowflake, consulte também [Funções internas comuns](../general/ built-in-functions.md).
Agregação¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
TransactSQL |
Snowflake |
Notas |
APPROX_COUNT_DISTINCT |
APPROX_COUNT_DISTINCT |
|
AVG |
AVG |
|
CHECKSUM_AGG |
*a ser definido |
|
COUNT |
COUNT |
|
COUNT_BIG |
*a ser definido |
|
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 |
Analítico¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
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 |
Agrupamento¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
COLLATIONPROPERTY |
*a ser definido |
|
TERTIARY_WEIGHTS |
*a ser definido |
Configuração¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
@@DBTS |
*a ser definido |
|
@@LANGID |
*a ser definido |
|
@@LANGUAGE |
*a ser definido |
|
@@LOCK_TIMEOUT |
*a ser definido |
|
@@MAX_CONNECTIONS |
*a ser definido |
|
@@MAX_PRECISION |
*a ser definido |
|
@@NESTLEVEL |
*a ser definido |
|
@@OPTIONS |
*a ser definido |
|
@@REMSERVER |
*a ser definido |
|
@@SERVERNAME |
CONCAT(”app.snowflake.com”, CURRENT_ACCOUNT( )) |
|
@@SERVICENAME |
*a ser definido |
|
@@SPID |
*a ser definido |
|
@@TEXTSIZE |
*a ser definido |
|
@@VERSION |
*a ser definido |
Pode ser imitado com o uso de CURRENT_VERSION |
Conversão¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
CAST |
CAST |
<p>Retorna NULL se o valor não for um número; caso contrário, retorna o valor numérico como seu valor.<br>Ao usar operadores como <, >, =, <> deve ser seguido por um NULL</p> |
CONVERT |
Verifique CONVERT |
O mesmo comportamento de CAST |
PARSE |
*a ser definido |
|
TRY_CAST |
TRY_CAST |
<p>Retorna NULL se o valor não for um número; caso contrário, retorna o valor numérico como seu valor.<br>Ao usar operadores como <, >, =, <> deve ser seguido por um NULL</p> |
*a ser definido |
O mesmo comportamento de TRY_CAST |
|
TRY_PARSE |
TRY_CAST |
O comportamento pode ser diferente ao analisar um número inteiro como data ou carimbo de data/hora. |
Criptográfico¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
ASYMKEY_ID |
*a ser definido |
|
ASYMKEYPROPERTY |
*a ser definido |
|
CERTENCODED |
*a ser definido |
|
CERTPRIVATEKEY |
*a ser definido |
|
DECRYPTBYASYMKEY |
*a ser definido |
|
DECRYPTBYCERT |
*a ser definido |
|
DECRYPTBYKEY |
*a ser definido |
|
DECRYPTBYKEYAUTOASYMKEY |
*a ser definido |
|
DECRYPTBYKEYAUTOCERT |
*a ser definido |
|
DECRYPTBYPASSPHRASE |
_*a ser definido_ |
Pode ser imitado com o uso de DENCRYPT_RAW |
ENCRYPTBYASYMKEY |
*a ser definido |
|
ENCRYPTBYCERT |
*a ser definido |
|
ENCRYPTBYKEY |
*a ser definido |
|
ENCRYPTBYPASSPHRASE |
*a ser definido |
Pode ser imitado com o uso de ENCRYPT_RAW |
HASHBYTES |
MD5, SHA1, SHA2 |
<p>Atualmente só hash separado é compatível. Use o adequado de acordo com o algoritmo </p><p><strong>MD5</strong> necessário, é um </p><p><strong>SHA1</strong> de 32 caracteres com codificação hexadecimal, tem uma cadeia de caracteres codificada em hexadecimal de 40 caracteres contendo o </p><p><strong>SHA2</strong> de 160 bits, uma cadeia de caracteres codificada em hexadecimal contendo o resumo da mensagem SHA-2 de N bits. Os tamanhos são:</p><p>224 = SHA-224</p><p>256 = SHA-256 (padrão)</p><p>384 = SHA-384</p><p>512 = SHA-512</p> |
IS_OBJECTSIGNED |
*a ser definido |
|
KEY_GUID |
*a ser definido |
|
KEY_ID |
*a ser definido |
|
KEY_NAME |
*a ser definido |
|
SIGNBYASYMKEY |
*a ser definido |
|
SIGNBYCERT |
*a ser definido |
|
SYMKEYPROPERTY |
*a ser definido |
|
VERIGYSIGNEDBYCERT |
*a ser definido |
Cursor¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
@@CURSOR_ROWS |
*a ser definido |
|
@@FETCH_STATUS |
*a ser definido |
|
CURSOR_STATUS |
*a ser definido |
Tipo de dados¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
DATALENGTH |
OCTET_LENGTH |
O Snowflake não usa bytes fracionários, portanto, o comprimento é sempre calculado como 8 * OCTET_LENGTH |
IDENT_SEED |
*a ser definido |
|
IDENT_CURRENT |
*a ser definido |
|
IDENTITY |
*a ser definido |
|
IDENT_INCR |
*a ser definido |
|
SQL_VARIANT_PROPERTY |
*a ser definido |
Data e hora¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
@@DATEFIRST |
*a ser definido |
|
@@LANGUAGE |
*a ser definido |
|
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP |
|
CURRENT_TIMEZONE |
*a ser definido |
|
DATEADD |
DATEADD |
|
DATEDIFF |
DATEDIFF |
|
DATEDIFF_BIG |
*a ser definido |
|
DATEFROMPARTS |
DATE_FROM_PARTS |
|
DATENAME |
*a ser definido |
<p>Esta função recebe dois argumentos: um datepart e um date. Ela retorna uma cadeia de caracteres. Aqui estão as partes de data compatíveis do TSQL para Snowflake</p><p><strong>year, yyyy, yy</strong> -> DATE_PART(YEAR, «$date») <strong>quarter, qq, q</strong> -> DATE_PART(QUARTER, «$date»)<br><strong>month, mm, m</strong> -> <strong>MONTHNAME</strong>( «$date»), fornecendo apenas um nome do mês de três letras em inglês<br><strong>dayofyear, dy, y</strong> -> DATE_PART(DAYOFYEAR, «$date»)<br><strong>day, dd, d</strong> -> DATE_PART(DAY, «$date»)<br><strong>week, wk, ww</strong> -> DATE_PART(WEEK, «$date»)</p><p><strong>weekday, dw</strong> -> <strong>DAYNAME</strong>(«$date»), fornecendo apenas um nome de dia de três letras em inglês<br><strong>hour, hh</strong> -> DATE_PART(HOUR, «$date»)<br><strong>minute, n</strong> -> DATE_PART(MINUTE, «$date»)<br><strong>second, ss, s</strong> -> DATE_PART(SECOND, «$date»)<br><strong>millisecond, ms</strong> -> DATE_PART(MS, «$date») <strong>microsecond, mcs</strong> -> DATE_PART(US, «$date»)<br><strong>nanosecond, ns</strong> -> DATE_PART(NS, «$date»)<br><strong>TZoffset, tz</strong> -> precisa de uma implementação especial para obter o deslocamento de tempo</p> |
DATEPART |
DATE_PART |
|
DATETIME2FROMPARTS |
*a ser definido |
|
DATETIMEFROMPARTS |
*a ser definido |
Pode ser imitado usando uma combinação de DATE_FROM_PARTS e TIME_FROM_PARTS |
DATETIMEOFFSETFROMPARTS |
*a ser definido |
|
DAY |
DAY |
|
EOMONTH |
*a ser definido |
Pode ser imitado com o uso de LAST_DAY |
GETDATE |
GETDATE |
|
GETUTCDATE |
*a ser definido |
Pode ser imitado com o uso de CONVERT_TIMEZONE |
ISDATE |
*a ser definido |
<p>Pode ser imitado usando <strong>TRY_TO_DATE</strong></p><p>Retorna NULL se o valor não for um <strong>date</strong>, caso contrário, retorna o valor da data como está.<br>Ao utilizar operadores como <, >, =, <> então deve ser seguido por um NULL</p> |
MONTH |
MONTH |
|
SMALLDATETIMEFROMPARTS |
*a ser definido |
Pode ser imitado usando uma combinação de DATE_FROM_PARTS e TIME_FROM_PARTS |
SWITCHOFFSET |
*a ser definido |
Pode ser imitado com o uso de CONVERT_TIMEZONE |
SYSDATETIME |
LOCALTIME |
|
SYSDATETIMEOFFSET |
*a ser definido |
Pode ser imitado com o uso de CONVERT_TIMEZONE e LOCALTIME |
SYSUTCDATETIME |
*a ser definido |
Pode ser imitado com o uso de CONVERT_TIMEZONE e LOCALTIME |
TIMEFROMPARTS |
TIME_FROM_PARTS |
|
TODATETIMEOFFSET |
*a ser definido |
Pode ser imitado com o uso de CONVERT_TIMEZONE |
YEAR |
YEAR |
JSON¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
ISJSON |
CHECK_JSON |
Esse é um «recurso de versão preliminar» no Snowflake |
JSON_VALUE |
*a ser definido |
<p>Pode ser imitado usando</p><p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))</p> |
JSON_QUERY |
*a ser definido |
|
JSON_MODIFY |
*a ser definido |
Matemática¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
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 |
Lógico¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
CHOOSE |
*a ser definido |
Pode ser imitado com o uso de DECODE |
GREATEST |
GREATEST |
|
IIF |
IIF |
|
LEAST |
LEAST |
|
NULLIF |
NULLIF |
Metadados¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
TransactSQL |
Snowflake |
Notas |
@@PROCID |
*a ser definido |
|
APP_NAME |
*a ser definido |
|
APPLOCK_MODE |
*a ser definido |
|
APPLOCK_TEST |
*a ser definido |
|
ASSEMBLYPROPERTY |
*a ser definido |
|
COL_LENGTH |
Uma UDF nomeada COL_LENGTH_UDF é fornecida para recuperar essas informações. Esta UDF funciona apenas com tipos VARCHAR, conforme especificado na documentação do Transact-SQL. Para outros tipos de dados, retorna NULL. |
|
COL_NAME |
*a ser definido |
|
COLUMNPROPERTY |
*a ser definido |
|
DATABASE_PRINCIPAL_ID |
*a ser definido |
Mapeia para CURRENT_USER quando não há argumentos |
DATABASEPROPERTYEX |
*a ser definido |
|
DB_ID |
*a ser definido |
Recomendamos alterar para CURRENT_DATABASE(). Se houver necessidade de emular esta funcionalidade, |
DB_NAME |
*a ser definido |
Mais utilizado no nome do procedimento mencionado acima |
FILE_ID |
*a ser definido |
|
FILE_IDEX |
*a ser definido |
|
FILE_NAME |
*a ser definido |
|
FILEGROUP_ID |
*a ser definido |
|
FILEGROUP_NAME |
*a ser definido |
|
FILEGROUPPROPERTY |
*a ser definido |
|
FILEPROPERTY |
*a ser definido |
|
FULLTEXTCATALOGPROPERTY |
*a ser definido |
|
FULLTEXTSERVICEPROPERTY |
*a ser definido |
|
INDEX_COL |
*a ser definido |
|
INDEXKEY_PROPERTY |
*a ser definido |
|
INDEXPROPERTY |
*a ser definido |
|
NEXT VALUE FOR |
*a ser definido |
|
OBJECT_DEFINITION |
*a ser definido |
|
OBJECT_ID |
*a ser definido |
Na maioria dos casos, pode ser substituído. A maioria dos casos é como: IF OBJECT_ID(“dbo.TABLE’) IS NOT NULL DROP TABLE dbo.Table, que pode ser substituído por um DROP TABLE IF EXISTS (esta sintaxe também é compatível com SQL SERVER). Se o object_id precisar ser replicado, uma UDF é adicionada, dependendo do segundo parâmetro da chamada de função. |
OBJECT_NAME |
*a ser definido |
Pode ser substituído por: CREATE OR REPLACE PROCEDURE FOO() RETURNS STRING LANGUAGE JAVASCRIPT AS “ var rs = snowflake.execute({sqlText: |
OBJECT_NAME(@@PROCID) |
“ObjectName” |
Esta transformação só ocorre quando está dentro de um DeclareStatement. |
OBJECT_SCHEMA_NAME |
*a ser definido |
|
OBJECT_SCHEMA_NAME(@@PROCID) |
:OBJECT_SCHEMA_NAME |
Esta transformação só ocorre quando está dentro de um DeclareStatement. |
OBJECTPROPERTY |
*a ser definido |
|
OBJECTPROPERTYEX |
*a ser definido |
|
ORIGINAL_DB_NAME |
*a ser definido |
|
PARSENAME |
PARSENAME_UDF |
Ela cria uma UDF para emular o mesmo comportamento da função Parsename. |
*a ser definido |
||
SCHEMA_NAME |
*a ser definido |
|
SCOPE_IDENTITY |
*a ser definido |
Se isso for necessário, eu recomendaria o uso de sequências e a captura do valor antes da inserção |
SERVERPROPERTY |
*a ser definido |
|
STATS_DATE |
*a ser definido |
|
TYPE_ID |
*a ser definido |
|
TYPE_NAME |
*a ser definido |
|
TYPEPROPERTY |
*a ser definido |
|
VERSION |
*a ser definido |
Classificação¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
DENSE_RANK |
DENSE_RANK |
|
NTILE |
NTILE |
|
RANK |
RANK |
|
ROW_NUMBER |
ROW_NUMBER |
Replicação¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
PUBLISHINGSERVERNAME |
*a ser definido |
Conjunto de linhas¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
OPENDATASOURCE |
*a ser definido |
|
OPENJSON |
*a ser definido |
|
QPENQUERY |
*a ser definido |
|
OPENROWSET |
*a ser definido |
|
OPENXML |
OPENXML_UDF |
Função definida pelo usuário usada como um comportamento equivalente no Snowflake. |
STRING_SPLIT |
SPLIT_TO_TABLE |
O sinalizador enable_ordinal em STRING_SPLIT do Transact-SQL não é diretamente compatível com a função SPLIT_TO_TABLE do Snowflake. Se a coluna ordinal for necessária, uma função definida pelo usuário (UDF) nomeada como STRING_SPLIT_UDF será gerada para replicar esse comportamento. Sem a coluna ordinal, observe que STRING_SPLIT retorna uma única coluna denominada value, enquanto SPLIT_TO_TABLE retorna três colunas: value, index (equivalente ao ordinal) e seq. Para detalhes adicionais, consulte a documentação de SPLIT_TO_TABLE. |
Segurança¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
CERTENCODED |
*a ser definido |
|
CERTPRIVATEKEY |
*a ser definido |
|
CURRENT_USER |
CURRENT_USER |
|
DATABASE_PRINCIPAL_ID |
*a ser definido |
|
HAS_PERMS_BY_NAME |
*a ser definido |
|
IS_MEMBER |
*a ser definido |
Alteração para a consulta INFORMATION_SCHEMA embora o cliente possa exigir a definição de novas funções |
IS_ROLEMEMBER |
*a ser definido |
<p>O Snowflake tem uma função semelhante</p><p><strong>IS_ROLE_IN_SESSION</strong></p> |
IS_SRVROLEMEMBER |
*a ser definido |
|
LOGINPROPERTY |
*a ser definido |
|
ORIGINAL_LOGIN |
*a ser definido |
|
PERMISSIONS |
*a ser definido |
|
PWDCOMPARE |
*a ser definido |
|
PWDENCRYPT |
*a ser definido |
|
SCHEMA_ID |
*a ser definido |
|
SCHEMA_NAME |
*a ser definido |
|
SESSION_USER |
*a ser definido |
|
SUSER_ID |
*a ser definido |
|
SUSER_NAME |
*a ser definido |
|
SUSER_SID |
*a ser definido |
|
SUSER_SNAME |
*a ser definido |
|
sys.fn_builtin\_permissions |
*a ser definido |
|
sys.fn_get_audit_file |
*a ser definido |
|
sys.fn_my_permissions |
*a ser definido |
|
SYSTEM_USER |
*a ser definido |
|
USER_ID |
*a ser definido |
|
USER_NAME |
*a ser definido |
Mapeado para CURRENT_USER |
Cadeia de caracteres¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
ASCII |
ASCII |
|
CHAR |
CHR, CHAR |
|
CHARINDEX |
CHARINDEX |
|
CONCAT |
CONCAT |
|
CONCAT_WS |
CONCAT_WS |
|
COALESCE |
COALESCE |
|
DIFFERENCE |
*a ser definido |
|
FORMAT |
TO_CHAR |
O SSC-EWI-0006 ou SSC-FDM-0036 pode ser gerado quando o formato (numérico ou de data e hora) não é totalmente compatível. |
LEFT |
LEFT |
|
LEN |
LEN |
|
LOWER |
LOWER |
|
LTRIM |
LTRIM |
|
NCHAR |
*a ser definido |
|
PATINDEX |
*a ser definido |
Mapeado para REGEXP_INSTR |
QUOTENAME |
QUOTENAME_UDF |
Cria um UDF para emular o mesmo comportamento da função Quotename |
REPLACE |
REPLACE |
|
REPLICATE |
REPEAT |
|
REVERSE |
REVERSE |
|
RIGHT |
RIGHT |
|
RTRIM |
RTRIM |
|
SOUNDEX |
SOUNDEX |
|
SPACE |
*a ser definido |
|
STR |
*a ser definido |
|
STRING_AGG |
*a ser definido |
|
STRING_ESCAPE |
*a ser definido |
|
STRING_SPLIT |
SPLIT_TO_TABLE |
|
STUFF |
*a ser definido |
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 |
Sistema¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
$PARTITION |
*a ser definido |
|
@@ERROR |
*a ser definido |
|
@@IDENTITY |
*a ser definido |
Se isso for necessário, eu recomendaria o uso de sequências e a captura do valor antes da inserção |
@@PACK_RECEIVED |
*a ser definido |
|
@@ROWCOUNT |
*a ser definido |
|
@@TRANCOUNT |
*a ser definido |
|
BINARY_CHECKSUM |
*a ser definido |
|
CHECKSUM |
*a ser definido |
|
COMPRESS |
COMPRESS |
<p>A versão do Snowflake tem um argumento do método para indicar o método de compressão. Estes são os valores válidos: <strong>SNAPPY, ZLIB, ZSTD, BZ2</strong></p><p>O nível de compressão é especificado entre parênteses e deve ser um número inteiro não negativo.</p> |
CONNECTIONPROPERTY |
*a ser definido |
|
CONTEXT_INFO |
*a ser definido |
|
CURRENT_REQUEST_ID |
*a ser definido |
|
CURRENT_TRANSACTION_ID |
*a ser definido |
|
DECOMPRESS |
*a ser definido |
O Snowflake tem duas funções para isso: DECOMPRESS_BINARY e DECOMPRESS_STRING |
ERROR_LINE |
*a ser definido |
<p>SnowScript: incompatível no Snowflake com **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: mapeará para o auxiliar **ERROR\_LINE**. EXEC O auxiliar capturará a propriedade de linha da exceção do rastreamento da pilha. </p> |
ERROR_MESSAGE |
SQLERRM |
A adição da mensagem de erro SSC-FDM-TS0023 retornada poderia ser diferente no Snowflake. |
ERROR_NUMBER |
*a ser definido |
<p>SnowScript: incompatível no Snowflake com **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: mapeará para o auxiliar **ERROR\_NUMBER**. O auxiliar EXEC capturará a propriedade de código da exceção.</p> |
ERROR_PROCEDURE |
Mapeada |
<p>SnowScript: usa o nome do procedimento atual, o valor do resultado **SSC-FDM-TS0023** adicionado é baseado no procedimento armazenado em que a função é chamada, em vez de onde a exceção ocorre.</p> <p>JavaScript: mapeará para o auxiliar **ERROR\_PROCEDURE**, retirado da propriedade do procedimento `arguments.callee.name` </p> |
ERROR_SEVERITY |
*a ser definido |
<p>SnowScript: incompatível no Snowflake com **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> |
ERROR_STATE |
SQLSTATE |
<p>SnowScript: convertida na propriedade **SQLSTATE** do Snowflake, o valor retornado **SSC-FDM-TS0023** adicionado poderia ser diferente no Snowflake.</p> <p>JavaScript: o auxiliar capturará a propriedade de estado da exceção </p> |
FORMATMESSAGE |
FORMATEMESSAGE_UDF |
Cria um UDF para emular o mesmo comportamento da função FORMATMESSAGE, mas com algumas limitações. |
GET_FILESTREAM_TRANSACTION_CONTEXT |
*a ser definido |
|
GETANSINULL |
*a ser definido |
|
HOST_ID |
*a ser definido |
|
HOST_NAME |
*a ser definido |
|
ISNULL |
NVL |
|
ISNUMERIC |
*a ser definido |
Não há equivalente direto, mas pode ser mapeado para um UDF personalizado, retornando os mesmos valores que no TSQL. |
MIN_ACTIVE_ROWVERSION |
*a ser definido |
|
NEWID |
*a ser definido |
Mapeado para UUID_STRING |
NEWSEQUENTIALID |
*a ser definido |
|
ROWCOUNT_BIG |
*a ser definido |
|
SESSION_CONTEXT |
*a ser definido |
|
SESSION_ID |
*a ser definido |
|
XACT_STATE |
*a ser definido |
|
Estatística do sistema¶
TransactSql |
Snowflake |
Notas |
|---|---|---|
@@CONNECTIONS |
*a ser definido |
<p>O Snowflake tem uma função semelhante: <strong>LOGIN_HISTORY.</strong></p><p>Retorna eventos de login dentro de um intervalo de tempo especificado</p> |
@@PACK_RECEIVED |
*a ser definido |
|
@@CPU_BUSY |
*a ser definido |
|
@@PACK_SENT |
*a ser definido |
|
@@TIMETICKS |
*a ser definido |
|
@@IDLE |
*a ser definido |
|
@@TOTAL_ERRORS |
*a ser definido |
|
@@IO_BUSY |
*a ser definido |
|
@@TOTAL_READ |
*a ser definido |
|
@@PACKET_ERRORS |
*a ser definido |
|
@@TOTAL_WRITE |
*a ser definido |
Texto e imagem¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
TEXTPTR |
*a ser definido |
|
TEXTVALID |
*a ser definido |
Acionador¶
TransactSQL |
Snowflake |
Notas |
|---|---|---|
COLUMNS_UPDATED |
*a ser definido |
|
EVENTDATA |
*a ser definido |
|
TRIGGER_NESTLEVEL |
*a ser definido |
|
UPDATE |
*a ser definido |
Funções do sistema¶
Esta seção descreve os equivalentes funcionais das funções do sistema no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.
ISNULL¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Substitui NULL pelo valor de substituição especificado. (ISNULL no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
ISNULL ( check_expression , replacement_value )
Snowflake SQL¶
NVL( <expr1> , <expr2> )
Exemplos¶
SQL Server¶
SELECT ISNULL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
Resultado:
COMPANYNAME |
|---|
SNOWFLAKE |
Snowflake SQL¶
SELECT
NVL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
Resultado:
COMPANYNAME |
|---|
SNOWFLAKE |
NEWID¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Cria um valor exclusivo do tipo uniqueidentifier. (NEWID no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
NEWID ( )
Snowflake SQL¶
UUID_STRING()
Exemplos¶
Aviso
Os resultados podem ser diferentes porque gera um ID exclusivo em tempo de execução
SQL Server¶
SELECT NEWID ( ) AS ID;
Resultado:
ID |
|---|
47549DDF-837D-41D2-A59C-A6BC63DF7910 |
Snowflake SQL¶
SELECT
UUID_STRING( ) AS ID;
Resultado:
ID |
|---|
6fd4312a-7925-4ad9-85d8-e039efd82089 |
NULLIF¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um valor nulo se as duas expressões especificadas forem iguais.
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
NULLIF ( check_expression , replacement_value )
Snowflake SQL¶
NULLIF( <expr1> , <expr2> )
Exemplos¶
SQL Server¶
SELECT NULLIF(6,9) AS RESULT1, NULLIF(5,5) AS RESULT2;
Resultado:
RESULT1 |
RESULT2 |
|---|---|
6 |
nulo |
Snowflake SQL¶
SELECT
NULLIF(6,9) AS RESULT1,
NULLIF(5,5) AS RESULT2;
Resultado:
RESULT1 |
RESULT2 |
|---|---|
6 |
nulo |
@@ROWCOUNT¶
Applies to
SQL Server
Descrição¶
Retorna o número de linhas afetadas pela última instrução. (@@ROWCOUNT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
@@ROWCOUNT
Snowflake SQL¶
SQLROWCOUNT
Exemplos¶
SQL Server¶
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;
Resultado:
3 |
Snowflake SQL¶
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();
Resultado:
:ADDCOUNT |
|---|
3 |
FORMATMESSAGE¶
Applies to
SQL Server
Descrição¶
Constrói uma mensagem a partir de uma mensagem existente em sys.messages ou de uma cadeia de caracteres fornecida. (FORMATMESSAGE no Transact-SQL).
Amostra de padrão de origem¶
Como o Snowflake não oferece suporte à função FORMATMESSAGE, a função FORMATMESSAGE_UDF é adicionada para simular seu comportamento.
Sintaxe¶
SQL Server¶
FORMATMESSAGE ( { msg_number | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )
Exemplos¶
SQL Server¶
SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS RESULT;
Resultado:
RESULT |
|---|
Esta é a primeira variável e esta é a segunda variável. |
Snowflake¶
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;
Resultado:
RESULT |
|---|
Esta é a primeira variável e esta é a segunda variável. |
FORMATMESSAGE_UDF¶
O Snowflake não tem uma função com a funcionalidade de FORMATMESSAGE. O SnowConvert AI gera a seguinte UDF Python para emular o comportamento de FORMATMESSAGE.
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,)
$$;
Este UDF pode não funcionar corretamente em alguns casos:
O uso do espaço reservado
%I64dgerará um erro.Se o número de argumentos de substituição for diferente do número de espaços reservados, ocorrerá um erro.
Alguns espaços reservados sem sinal, como
%uou%X, não se comportarão adequadamente ao formatar o valor.Ele não pode lidar com message_ids.
Funções de cadeia de caracteres¶
Esta seção descreve os equivalentes funcionais das funções de cadeia de caracteres no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.
CHAR¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um caractere de byte único com o número inteiro enviado como parâmetro na tabela ASCII (CHAR no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
CHAR( expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
{CHR | CHAR} ( <input> )
JavaScript¶
Documentação completa do JavaScript
String.fromCharCode( expression1, ... , expressionN )
Exemplos¶
SQL Server¶
SELECT CHAR(170) AS SMALLEST_A
Saída:
SMALLEST_A |
|---|
ª |
Snowflake SQL¶
SELECT
CHAR(170) AS SMALLEST_A;
Resultado:
SMALLEST_A |
|---|
ª |
JavaScript¶
CREATE OR REPLACE FUNCTION get_char(expression float)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return String.fromCharCode( EXPRESSION );
$$;
SELECT GET_CHAR(170) SMALLEST_A;
Resultado:
SMALLEST_A |
|---|
ª |
CHARINDEX¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o índice da primeira ocorrência do valor especificado enviado como parâmetro quando ele corresponde (CHARINDEX no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
CHARINDEX( expression_to_find, expression_to_search [, start] )
Snowflake SQL¶
Documentação completa do Snowflake SQL
CHARINDEX( <expr1>, <expr2> [ , <start_pos> ] )
JavaScript¶
Documentação completa do JavaScript
String.indexOf( search_value [, index] )
Exemplos¶
SQL Server¶
SELECT CHARINDEX('t', 'Customer') AS MatchPosition;
Resultado:
INDEX |
|---|
33 |
Snowflake SQL¶
SELECT
CHARINDEX('t', 'Customer') AS MatchPosition;
Resultado:
INDEX |
|---|
33 |
JavaScript¶
Nota
Os índices no Transact começam em 1, em vez do JavaScript que começa em 0.
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;
Resultado:
INDEX |
|---|
33 |
COALESCE¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Avalia os argumentos em ordem e retorna o valor atual da primeira expressão que inicialmente não é interpretada como NULL. Por exemplo,SELECT COALESCE(NULL, NULL, “third_value”, “fouth_value”); retorna o terceiro valor porque o terceiro valor é o primeiro valor que não é nulo. (COALESCE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
COALESCE ( expression [ ,...n ] )
Snowflake SQL¶
COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
Exemplos¶
SQL Server¶
SELECT TOP 10 StartDate,
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL
FROM HumanResources.EmployeeDepartmentHistory
Resultado:
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 |
Snowflake SQL¶
SELECT TOP 10
StartDate,
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL
FROM
HumanResources.EmployeeDepartmentHistory;
Resultado:
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 |
CONCAT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Faz uma concatenação de valores de cadeia de caracteres com outros. (CONCAT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
CONCAT ( string_value1, string_value2 [, string_valueN ] )
Snowflake SQL¶
Documentação completa do Snowflake SQL
CONCAT( <expr1> [ , <exprN> ... ] )
<expr1> || <expr2> [ || <exprN> ... ]
JavaScript¶
Documentação completa do JavaScript
String.concat( expression1, ..., expressionN )
Exemplos¶
SQL Server¶
SELECT CONCAT('Ray',' ','of',' ','Light') AS TITLE;
Saída:
TITLE |
|---|
Raio de luz |
Snowflake SQL¶
SELECT
CONCAT('Ray',' ','of',' ','Light') AS TITLE;
Saída:
TITLE |
|---|
Raio de luz |
JavaScript¶
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;
Saída:
TITLE|
————| Ray of Light|
LEFT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a parte direita de uma cadeia de caracteres com o número especificado de caracteres. (RIGHT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
LEFT ( character_expression , integer_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
LEFT ( <expr> , <length_expr> )
JavaScript¶
Função usada para emular o comportamento
function LEFT(string, index){
if(index < 0){
throw new RangeError('Invalid INDEX on LEFT function');
}
return string.slice( 0, index);
}
return LEFT(STR, INDEX);
Exemplos¶
SQL Server¶
SELECT LEFT('John Smith', 5) AS FIRST_NAME;
Saída:
FIRST_NAME |
|---|
John |
Snowflake SQL¶
SELECT LEFT('John Smith', 5) AS FIRST_NAME;
Saída:
FIRST_NAME |
|---|
John |
JavaScript¶
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;
Saída:
FIRST_NAME |
|---|
John |
LEN¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o comprimento de uma cadeia de caracteres (LEN no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
LEN( string_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
LENGTH( <expression> )
LEN( <expression> )
JavaScript¶
Documentação completa do JavaScriptSQL
string.length
Exemplos¶
SQL Server¶
SELECT LEN('Sample text') AS [LEN];
Saída:
LEN |
|---|
11 |
Snowflake SQL¶
SELECT LEN('Sample text') AS LEN;
Saída:
LEN |
|---|
11 |
JavaScript¶
CREATE OR REPLACE FUNCTION get_len(str varchar)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return STR.length;
$$;
SELECT GET_LEN('Sample text') LEN;
Saída:
LEN |
|---|
11 |
LOWER¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte uma cadeia de caracteres em minúsculas (LOWER no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
LOWER ( character_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
LOWER( <expr> )
JavaScript¶
Documentação completa do JavaScriptSQL
String.toLowerCase( )
Exemplos¶
SQL Server¶
SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
Saída:
LOWERCASE |
|---|
você é uma previsão dos bons |
Snowflake SQL¶
SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
Saída:
LOWERCASE |
|---|
você é uma previsão dos bons |
JavaScript¶
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;
Saída:
LOWERCASE |
|---|
você é uma previsão dos bons |
NCHAR¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o caractere UNICODE de um número inteiro enviado como parâmetro (NCHAR no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
NCHAR( expression )
Argumentos¶
expression: Expressão de número inteiro.
Tipo de retorno¶
Valor da cadeia de caracteres, que depende da entrada recebida.
Exemplos¶
Consulta¶
SELECT NCHAR(170);
Resultado¶
ª |
Nota
A equivalência dessa função no JavaScript está documentada em CHAR.
REPLACE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Substitui todas as ocorrências de um valor de cadeia de caracteres especificado por outro valor de cadeia de caracteres. (REPLACE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
REPLACE ( string_expression , string_pattern , string_replacement )
Snowflake SQL¶
Documentação completa do Snowflake SQL
REPLACE( <subject> , <pattern> [ , <replacement> ] )
JavaScript¶
String.replace( pattern, new_expression)
Exemplos¶
SQL Server¶
SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
Saída:
COLUMNNAME |
---------------------|
Real computer science|
Snowflake SQL¶
SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
Saída:
COLUMNNAME |
---------------------|
Real computer science|
JavaScript¶
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;
\ Saída:
COLUMNNAME |
---------------------|
Real computer science|
REPLICATE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Replica um valor de cadeia de caracteres um número especificado de vezes (REPLICATE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
REPLICATE( string_expression, number_expression )
Snowflake SQL¶
REPEAT(<input>, <n>)
JavaScript¶
String.repeat( number_expression )
Exemplos¶
SQL Server¶
SELECT REPLICATE('Staying alive',5) AS RESULT
Resultado:
RESULT |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Snowflake SQL¶
SELECT REPEAT('Staying alive',5) AS RESULT;
Resultado:
RESULT |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
JavaScript¶
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;
Resultado:
RESULT |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
RIGHT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a parte direita de uma cadeia de caracteres com o número especificado de caracteres. (RIGHT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
RIGHT ( character_expression , integer_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
RIGHT( <expr> , <length_expr> )
JavaScript¶
UDF usado para emular o comportamento
function RIGHT(string, index){
if(index< 0){
throw new RangeError('Invalid INDEX on RIGHT function');
}
return string.slice( string.length - index, string.length );
}
Exemplos¶
SQL Server¶
SELECT RIGHT('John Smith', 5) AS LAST_NAME;
Saída:
LAST_NAME|
------------|
Smith|
Snowflake SQL¶
SELECT RIGHT('John Smith', 5) AS LAST_NAME;
Saída:
LAST_NAME|
------------|
Smith|
JavaScript¶
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;
\ Saída:
LAST_NAME|
------------|
Smith|
RTRIM¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna uma expressão de caractere depois de remover os espaços em branco à esquerda (RTRIM no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
RTRIM( string_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
RTRIM(<expr> [, <characters> ])
JavaScript¶
Função personalizada usada para emular o comportamento
function RTRIM(string){
return string.replace(/s+$/,"");
}
Exemplos¶
SQL Server¶
Entrada:
SELECT RTRIM('LAST TWO BLANK SPACES ') AS [RTRIM]
Saída:
RTRIM |
---------------------|
LAST TWO BLANK SPACES|
Snowflake SQL¶
SELECT RTRIM('LAST TWO BLANK SPACES ') AS RTRIM;
Resultado:
RTRIM |
---------------------|
LAST TWO BLANK SPACES|
JavaScript¶
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;
Resultado:
RTRIM |
---------------------|
LAST TWO BLANK SPACES|
SPACE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um número de ocorrências de espaços em branco (SPACE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SPACE ( integer_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
SPACE(<n>)
JavaScript¶
Função personalizada usada para emular o comportamento
function SPACE( occurrences ){
return ' '.repeat( occurrences );
}
Exemplos¶
SQL Server¶
Entrada:
SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
Saída:
RESULT |
-------------|
SOME TEXT|
Snowflake SQL¶
Entrada:
SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
Saída:
RESULT |
-------------|
SOME TEXT|
JavaScript¶
Entrada:
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;
Saída:
RESULT |
-------------|
SOME TEXT|
SUBSTRING¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna uma expressão de caractere depois de remover os espaços em branco à esquerda (RTRIM no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SUBSTRING( string_expression, start, length )
Snowflake SQL¶
Documentação completa do Snowflake SQL
SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )
SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
JavaScript¶
Função personalizada usada para emular o comportamento
string.substring( indexA [, indexB])
Exemplos¶
SQL Server¶
Entrada:
SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;
Saída:
SOMETEXT|
--------|
bcd |
Snowflake SQL¶
SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;
Resultado:
SOMETEXT|
--------|
bcd |
JavaScript¶
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;
Resultado:
SOMETEXT|
--------|
bcd |
UPPER¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte uma cadeia de caracteres em maiúsculas (UPPER no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
UPPER( string_expression )
Snowflake SQL¶
Documentação completa do Snowflake SQL
UPPER( <expr> )
JavaScript¶
Documentação completa do JavaScriptSQL
String.toUpperCase( )
Exemplos¶
SQL Server¶
SELECT UPPER('you are a prediction of the good ones') AS [UPPER]
Saída:
+-------------------------------------|
|UPPER |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
Snowflake SQL¶
SELECT
UPPER('you are a prediction of the good ones') AS UPPER;
Saída:
+-------------------------------------|
|UPPER |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
JavaScript¶
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;
\ Saída:
UPPER |
-------------------------------------|
YOU ARE A PREDICTION OF THE GOOD ONES|
ASCII¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o código numérico de um caractere na tabela ASCII (ASCII no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
ASCII( expression )
Argumentos¶
expression: expressão VARCVHAR ou CHAR.
Tipo de retorno¶
INT.
Exemplos¶
Consulta¶
SELECT ASCII('A') AS A , ASCII('a') AS a;
Resultado¶
A| a|
-----------| ----------|
65| 97|
ASCII no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna o código numérico de um caractere na tabela ASCII (Documentação da funçãoJavaScript charCodeAt).
Amostra de padrão de origem¶
Sintaxe¶
string.charCodeAt( [index] )
Argumentos¶
index(opcional): Índice da cadeia de caracteres para obter o caractere e retornar seu número de código na tabela ASCII. Se esse parâmetro não for especificado, será considerado 0 como padrão. \
Tipo de retorno¶
Int.
Exemplos¶
Consulta¶
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;
Resultado¶
A| a|
-----------| ----------|
65| 97|
QUOTENAME¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna uma string delimitada por aspas (QUOTENAME no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
QUOTENAME( string_expression [, quote_character])
Argumentos¶
string_expression: Cadeia de caracteres a ser delimitada.
quote_character: um caractere para delimitar a cadeia de caracteres.
Tipo de retorno¶
NVARCHAR(258). Nulo se a aspa for diferente de (“), ([]), («), ( () ), ( >< ), ({}) ou (`).
Exemplos¶
Consulta¶
SELECT QUOTENAME('Hello', '`') AS HELLO;
Resultado¶
HELLO|
---------|
`Hello`|
QUOTENAME no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, essa função não está disponível no JavaScript, mas pode ser implementada usando funções predefinidas.
Amostra de padrão de origem¶
Exemplo de implementação¶
function QUOTENAME(string, quote){
return quote.concat(string, quote);
}
Argumentos¶
string: Expressão de cadeia de caracteres para delimitar.
quote: Aspa a ser usada como delimitador.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
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;
Resultado¶
HELLO|
---------|
`Hello`|
CONCAT_WS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Faz uma concatenação de valores de cadeia de caracteres com outros usando um separador entre eles (CONCAT_WS no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
CONCAT_WS( separator, expression1, ... ,expressionN )
Argumentos¶
separator: Separador para junção.
expression1, ... ,expressionN: Expressão a ser encontrada em uma cadeia de caracteres.
Tipo de retorno¶
Valor da cadeia de caracteres, depende da entrada recebida.
Exemplos¶
Consulta¶
SELECT CONCAT_WS(' ', 'Mariah','Carey') AS NAME;
Resultado¶
NAME|
------------|
Mariah Carey|
Join no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Concatena os argumentos da cadeia de caracteres à cadeia de caracteres de chamada usando um separador (Documentação da função JavaScript Join).
Amostra de padrão de origem¶
Sintaxe¶
Array.join( separator )
Argumentos¶
separator: Caractere para junção.
Tipo de retorno¶
String.
Exemplos¶
Consulta¶
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;
Resultado¶
NAME|
------------|
Mariah Carey|
SOUNDEX¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um código de quatro caracteres para avaliar a similaridade de duas cadeias de caracteres (SOUNDEX no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SOUNDEX( string_expression )
Argumentos¶
string_expression: Expressão de cadeia de caracteres para reverter.
Tipo de retorno¶
O mesmo tipo de dados da expressão de cadeia de caracteres enviada como parâmetro.
Exemplos¶
Consulta¶
SELECT SOUNDEX('two') AS TWO , SOUNDEX('too') AS TOO;
Resultado¶
TWO| TOO|
---------|---------|
T000| T000|
SOUNDEX no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, o JavaScript não oferece um método que execute o algoritmo SOUNDEX, mas ele pode ser implementado manualmente.
Amostra de padrão de origem¶
Exemplo de implementação¶
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));
}
Argumentos¶
word: Expressão de cadeia de caracteres para obter sua equivalência SOUNDEX.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
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;
Resultado¶
TWO| TOO|
---------|---------|
T000| T000|
REVERSE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Inverte uma cadeia de caracteres (REVERSE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
REVERSE( string_expression )
Argumentos¶
string_expression: Expressão de cadeia de caracteres para reverter.
Tipo de retorno¶
O mesmo tipo de dados da expressão de cadeia de caracteres enviada como parâmetro.
Exemplos¶
Consulta¶
SELECT REVERSE('rotator') AS PALINDROME;
Resultado¶
PALINDROME|
----------------|
rotator|
reverse no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, essa função não está disponível no JavaScript, mas pode ser implementada usando funções predefinidas.
Amostra de padrão de origem¶
Exemplo de implementação¶
function REVERSE(string){
return string.split("").reverse().join("");
}
Argumentos¶
string: Expressão de cadeia de caracteres para reverter.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION REVERSE(str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return STR.split("").reverse().join("");
$$;
SELECT REVERSE('rotator') PALINDROME;
Resultado¶
PALINDROME|
----------------|
rotator|
STRING_ESCAPE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Escapa caracteres especiais em textos e retorna o texto com os caracteres escapados. (STRING_ESCAPE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
STRING_ESCAPE( text, type )
Argumentos¶
text: Texto para escapar caracteres.
type: Tipo de formato para escapar caracteres. Atualmente, JSON é o único formato suportado.
Tipo de retorno¶
VARCHAR.
Exemplos¶
Consulta¶
SELECT STRING_ESCAPE('\ / \\ " ', 'json') AS [ESCAPE];
Resultado¶
ESCAPE|
--------------------------|
\\ \/ \\\\ \" |
stringify no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte um objeto em um formato de cadeia de caracteres JSON (Documentação da função JavaScript stringify).
Amostra de padrão de origem¶
Sintaxe¶
JSON.stringify( value )
Argumentos¶
value: Expressão de objeto a ser convertida.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION string_escape (str varchar)
RETURNS string
LANGUAGE JAVASCRIPT
AS
$$
return JSON.stringify( STR );
$$;
SELECT STRING_ESCAPE('\ / \\ " ') ESCAPE;
Resultado¶
ESCAPE|
--------------------------|
\\ \/ \\\\ \" |
TRIM¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna uma expressão de caractere sem espaços em branco (TRIM no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
TRIM( string_expression )
Argumentos¶
string_expression: Expressões de cadeia de caracteres a serem convertidas.
Tipo de retorno¶
VARCHAR ou NVARCHAR
Exemplos¶
SQL Server¶
SELECT TRIM(' FIRST AND LAST TWO BLANK SPACES ') AS [TRIM];
Saída:
+-------------------------------|
|TRIM |
+-------------------------------|
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------|
Snowflake SQL¶
SELECT TRIM(' FIRST AND LAST TWO BLANK SPACES ') AS TRIM;
Saída:
+-------------------------------|
|TRIM |
+-------------------------------|
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------|
trim no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Substitui as ocorrências de um padrão usando um novo padrão enviado como parâmetro (Documentação da função JavaScript Replace).
Amostra de padrão de origem¶
Sintaxe¶
String.trim( )
Argumentos¶
Essa função não recebe nenhum parâmetro.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
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
Resultado¶
TRIM|
-------------------------------|
FIRST AND LAST TWO BLANK SPACES|
DIFFERENCE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um número inteiro que mede a diferença entre duas cadeias de caracteres usando o algoritmo SOUNDEX (DIFFERENCE no Transact-SQL). \ Conta os caracteres comuns das cadeias de caracteres resultantes da execução do algoritmo SOUNDEX.
Amostra de padrão de origem¶
Sintaxe¶
DIFFERENCE( expression1, expression1 )
Argumentos¶
expression1, expression2: Expressões de cadeia de caracteres a serem comparadas.
Tipo de retorno¶
Int.
Exemplos¶
Consulta¶
SELECT DIFFERENCE('Like', 'Mike');
Resultado¶
Output |
-----------|
3 |
DIFFERENCE no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, essa funcionalidade não está disponível no JS, mas pode ser implementada facilmente.
Nota
Essa função requer a implementação do algoritmo SOUNDEX.
Amostra de padrão de origem¶
Exemplo de implementação¶
function DIFFERENCE(strA, strB) {
var count = 0;
for (var i = 0; i < strA.length; i++){
if ( strA[i] == strB[i] ) count++;
}
return count;
}
Argumentos¶
strA, strB: Expressões de cadeia de caracteres resultantes da execução do algoritmo SOUNDEX.
Tipo de retorno¶
String.
Exemplos¶
Consulta¶
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;
Resultado¶
DIFFERENCE|
-------------|
4|
FORMAT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um valor formatado com o formato especificado e a cultura opcional (FORMAT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
FORMAT( value, format [, culture])
Argumentos¶
value: Expressões de cadeia de caracteres para fornecer o formato.
format: Formato desejado.
culture (opcional): argumento NVarchar que especifica a cultura. Se não for especificado, usa as linguagens da sessão atual.
Tipo de retorno¶
NULL se o parâmetro de cultura for inválido; caso contrário, ele segue os próximos tipos de dados:
Categoria |
Tipo .NET |
|
|---|---|---|
Numérico |
bigint |
Int64 |
Numérico |
int |
Int32 |
Numérico |
smallint |
Int16 |
Numérico |
tinyint |
Byte |
Numérico |
decimal |
SqlDecimal |
Numérico |
numérico |
SqlDecimal |
Numérico |
float |
Double |
Numérico |
real |
Single |
Numérico |
smallmoney |
Decimal |
Numérico |
money |
Decimal |
Data e hora |
date |
DateTime |
Data e hora |
time |
TimeSpan |
Data e hora |
datetime |
DateTime |
Data e hora |
smalldatetime |
DateTime |
Data e hora |
datetime2 |
DateTime |
Data e hora |
datetimeoffset |
DateTimeOffset |
Exemplos¶
Consulta¶
SELECT FORMAT(CAST('2022-01-24' AS DATE), 'd', 'en-gb') AS 'Great Britain';
Resultado¶
GREAT BRITAIN|
---------------|
24/01/2022|
Consulta¶
SELECT FORMAT(244900.25, 'C', 'cr-CR') AS 'CURRENCY';
Resultado¶
CURRENCY |
|---|
₡244.900,25 |
FORMAT no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Há diferentes funções para formatar valores de data e inteiros em JavaScript. Infelizmente, essas funcionalidades não estão integradas em um único método.
Valores DateTime¶
Sintaxe¶
Intl.DateTimeFormat( format ).format( value )
Argumentos¶
locales (Opcional): Expressão de cadeia de caracteres do formato a ser aplicado.
options (Opcional): Objeto com diferentes propriedades compatíveis para formatos de expressões numéricas (Documentação da função JavaScript NumberFormat).
value: Expressão numérica a ser formatada.
Tipo de retorno¶
String.
Valores Numeric¶
Sintaxe¶
Intl.NumberFormat( [locales [, options]] ).format( value )
Argumentos¶
locales (Opcional): Expressão de cadeia de caracteres do formato a ser aplicado.
options (Opcional): Objeto com diferentes propriedades compatíveis para formatos de expressões numéricas (Documentação da função JavaScript NumberFormat).
value: Expressão numérica a ser formatada.
Tipo de retorno¶
String.
Exemplos¶
DateTime¶
Consulta¶
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;
Resultado¶
GREAT_BRITAIN|
---------------|
24/01/2022|
Numérico¶
Consulta¶
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;
Resultado¶
CURRENCY|
---------------|
244.900,25 CRC|
PATINDEX¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a posição inicial da primeira ocorrência de um padrão em uma expressão especificada (PATINDEX no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
PATINDEX( pattern, expression )
Argumentos¶
pattern: Padrão a encontrar.
expression: Expressão a ser pesquisada.
Tipo de retorno¶
Inteiro. Retorna 0 se o padrão não for encontrado.
Exemplos¶
Consulta¶
SELECT PATINDEX( '%on%', 'No, no, non esistono più') AS [PATINDEX]
Resultado¶
PATINDEX|
------------|
10|
search no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Localiza o índice de um padrão usando REGEX (Documentação da função JavaScript search).
Amostra de padrão de origem¶
Sintaxe¶
String.search( regex )
Argumentos¶
regex: Expressão regular que corresponde ao padrão desejado.
Tipo de retorno¶
Inteiro. Se o padrão não corresponder a nenhuma parte da cadeia de caracteres, retornará -1.
Exemplos¶
Consulta¶
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;
Resultado¶
PATINDEX|
------------|
10|
STR¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna dados de caracteres convertidos de dados numéricos. Os dados de caracteres são justificados à direita, com um comprimento e uma precisão decimal especificados. (STR no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
STR ( float_expression [ , length [ , decimal ] ] )
Snowflake SQL¶
STR_UDF( numeric_expression, number_format )
Argumentos¶
numeric_expression: Expressão flutuante com um ponto decimal.
length (Opcional): Comprimento que a expressão retornada terá, incluindo notação de ponto, partes decimais e flutuantes.
decimal(opcional): É o número de casas à direita do ponto decimal.
Tipo de retorno¶
VARCHAR.
Exemplos¶
SQL Server¶
Entrada:
/* 1 */
SELECT STR(123.5);
/* 2 */
SELECT STR(123.5, 2);
/* 3 */
SELECT STR(123.45, 6);
/* 4 */
SELECT STR(123.45, 6, 1);
Saída:
1) 124
2) **
3) 123
4) 123.5
Snowflake SQL¶
Entrada:
/* 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');
Saída:
1) 124
2) ##
3) 123
4) 123.5
STR no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, essa funcionalidade não está disponível no JS, mas pode ser implementada facilmente usando as funções predefinidas para cadeia de caracteres.
Amostra de padrão de origem¶
Exemplo de implementação¶
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);
}
Argumentos¶
number: Expressão flutuante com um ponto decimal.
max_length: Comprimento que a expressão retornada terá, incluindo notação de ponto, partes decimais e flutuantes.
float_precision: É o número de casas à direita do ponto decimal.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
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);
Resultado¶
STR|
--------------|
12345.674000|
LTRIM¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna uma expressão de caractere depois de remover os espaços em branco à esquerda (LTRIM no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
LTRIM( string_expression )
Argumentos¶
string_expression: Expressões de cadeia de caracteres a serem convertidas.
Tipo de retorno¶
VARCHAR ou NVARCHAR
Exemplos¶
Consulta¶
SELECT LTRIM(' FIRST TWO BLANK SPACES') AS [LTRIM]
Resultado¶
LTRIM|
----------------------|
FIRST TWO BLANK SPACES|
LTRIM no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, essa função não está disponível no JavaScript, mas pode ser implementada usando expressões regulares.
Amostra de padrão de origem¶
Exemplo de implementação¶
function LTRIM(string){
return string.replace(/^s+/,"");
}
Argumentos¶
string: Expressão de cadeia de caracteres para remover espaços em branco.
Tipo de retorno¶
Cadeia de caracteres.
Exemplos¶
Consulta¶
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;
Resultado¶
LTRIM|
----------------------|
FIRST TWO BLANK SPACES|
Funções de classificação¶
Esta seção descreve os equivalentes funcionais das funções de classificação no Transact-SQL para o código do Snowflake SQL e JavaScript, orientados para seu uso em procedimentos armazenados do SnowFlake.
DENSE_RANK¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Essa função retorna a classificação de cada linha em uma partição de conjunto de resultados, sem lacunas nos valores de classificação. A classificação de uma linha específica é um mais o número de valores de classificação distintos que vêm antes dessa linha específica. (DENSE_RANK no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )
Snowflake SQL¶
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 > )
Exemplos¶
SQL Server¶
SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
Resultado:
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|
Snowflake SQL¶
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Resultado:
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 relacionados¶
SSC-EWI-0001: Token não reconhecido na linha do código-fonte.
RANK¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a classificação de cada linha dentro da partição de um conjunto de resultados. A classificação de uma linha é um mais o número de classificações que vêm antes da linha em questão. (RANK no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )
Snowflake SQL¶
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 )
Exemplos¶
SQL Server¶
SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
Resultado:
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|
Snowflake SQL¶
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Resultado:
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 relacionados¶
SSC-EWI-0001: Token não reconhecido na linha do código-fonte.
ROW_NUMBER¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Numera a saída de um conjunto de resultados. Mais especificamente, retorna o número sequencial de uma linha em uma partição de um conjunto de resultados, começando em 1 para a primeira linha em cada partição. (ROW_NUMBER no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
Snowflake SQL¶
Documentação completa do Snowflake SQL
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 )
Exemplos¶
SQL Server¶
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM HUMANRESOURCES.DEPARTMENT
Saída:
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 |
Snowflake SQL¶
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM
HUMANRESOURCES.DEPARTMENT;
Saída:
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 relacionados¶
SSC-EWI-0001: Token não reconhecido na linha do código-fonte.
Funções lógicas¶
Esta seção descreve os equivalentes funcionais das funções lógicas no Transact-SQL para código Snowflake SQL e JavaScript, orientados ao seu uso em procedimentos armazenados no SnowFlake.
IIF¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um de dois valores, dependendo do fato de a expressão booliana ser avaliada como verdadeira ou falsa. (IIF no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
IIF( boolean_expression, true_value, false_value )
Snowflake SQL¶
IFF( <condition> , <expr1> , <expr2> )
Exemplos¶
SQL Server¶
SELECT IIF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT
Resultado:
RESULT|
------|
FALSE|
Snowflake SQL¶
SELECT
IFF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT;
Resultado:
RESULT|
------|
FALSE|
Funções XML¶
Esta seção descreve a tradução de funções XML do Transact-SQL para Snowflake SQL.
Consulta¶
Applies to
SQL Server
Aviso
Essa transformação será realizada no futuro
Descrição¶
Especifica um XQuery em relação a uma instância do tipo de dados xml. O resultado é do tipo xml. O método retorna uma instância de XML não tipado. (Query() no Transact-SQL)
Amostra de padrões de origem ¶
O exemplo a seguir detalha a transformação de .query( )
SQL Server ¶
Entrada¶
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;
Saída¶
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 ¶
Entrada¶
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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "07/11/2025", "domain": "no-domain-provided" }}'
;
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
XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Warranty') as Warranty,
XMLGET(XMLGET(XMLGET(object_col, 'ProductDescription'), 'Features'), 'Maintenance') as Maintenance
from
xml_demo;
Saída¶
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> |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
Valor¶
Applies to
SQL Server
Aviso
Essa transformação será realizada no futuro
Descrição¶
Executa um XQuery em relação ao XML e retorna um valor do tipo SQL. Esse método retorna um valor escalar. (value() no Transact-SQL).
Amostra de padrões de origem ¶
O exemplo a seguir detalha a transformação de .value( )
SQL Server ¶
Entrada¶
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;
Saída¶
ID | ProductName | Warranty |
----|-------------|------------------------|
1 | Road Bike | 1 year parts and labor |
2 | Skate | 1 year parts and labor |
Snowflake SQL ¶
Entrada¶
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": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "transact", "convertedOn": "07/11/2025", "domain": "no-domain-provided" }}'
;
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
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;
Saída¶
ID | PRODUCTNAME | WARRANRTY |
----|-------------|------------------------|
1 | Road Bike | 1 year parts and labor |
2 | Skate | 1 year parts and labor |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
Funções de agregação¶
Esta seção descreve os equivalentes funcionais das funções de agregação no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.
COUNT¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Essa função retorna o número de itens encontrados em um grupo. COUNT funciona como a função COUNT_BIG. Essas funções diferem apenas nos tipos de dados de seus valores de retorno. COUNT sempre retorna um valor de tipo de dados int. COUNT_BIG sempre retorna um valor de tipo de dados bigint. (COUNT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
Snowflake SQL¶
COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Exemplos¶
SQL Server¶
SELECT COUNT(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
Resultado:
TOTAL |
|---|
290 |
Snowflake SQL¶
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Resultado:
TOTAL |
|---|
290 |
COUNT_BIG¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Essa função retorna o número de itens encontrados em um grupo. COUNT_BIG opera como a função COUNT. Essas funções diferem apenas nos tipos de dados de seus valores de retorno. COUNT_BIG sempre retorna um valor de tipo de dados bigint. COUNT sempre retorna um valor de tipo de dados int. (COUNT_BIG no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )
Snowflake SQL¶
COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Exemplos¶
SQL Server¶
SELECT COUNT_BIG(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
Resultado:
TOTAL |
|---|
290 |
Snowflake SQL¶
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Resultado:
TOTAL |
|---|
290 |
SUM¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Retorna a soma de todos os valores, ou somente os valores DISTINCT, na expressão. SUM pode ser usado somente com colunas numéricas. Os valores nulos são ignorados. (SUM no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SUM ( [ ALL | DISTINCT ] expression )
Snowflake SQL¶
SUM( [ DISTINCT ] <expr1> )
Exemplos¶
SQL Server¶
SELECT SUM(VACATIONHOURS) FROM HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
Resultado:
TOTALVACATIONHOURS |
|---|
14678 |
Snowflake SQL¶
SELECT
SUM(VACATIONHOURS) FROM
HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
Resultado:
TOTALVACATIONHOURS |
|---|
14678 |
UDFs personalizadas do SnowConvert AI¶
Descrição¶
Algumas funções ou comportamentos do Transact-SQL podem não estar disponíveis ou podem se comportar de forma diferente no Snowflake. Para minimizar essas diferenças, algumas funções são substituídas por UDFs personalizadas do SnowConvert AI.
Esses UDFs são criados automaticamente durante a migração, na pasta UDF Helper, dentro da pasta Output. Há um arquivo por UDF personalizado.
OPENXML UDF¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Esse UDF personalizado é adicionado para processar uma visualização de conjunto de linhas em um documento XML. Isso seria usado para declarações, pois funciona como um provedor de conjunto de linhas.
Parâmetros opcionais e diferentes tipos de nós não são compatíveis com esta versão de UDF. O nó de elemento é processado por padrão.
Sobrecargas personalizadas de UDF¶
Parâmetros
XML: Um
VARCHARque representa o conteúdo legível do XML.PATH: Um varchar que contém o padrão dos nós a serem processados como linhas.
UDF¶
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¶
Consulta¶
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));
Resultado¶
CustomerID | ContactName
----------------------------|
VINET | Paul Henriot
LILAS | Carlos Gonzlez
Snowflake¶
Nota
O exemplo a seguir é isolado em um procedimento armazenado porque as variáveis de ambiente suportam apenas 256 bytes de armazenamento e o código de demonstração XML usa mais do que esse limite.
Consulta¶
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;
Resultado¶
CustomerID |
ContactName |
|---|---|
VINET |
Paul Henriot |
LILAS |
Carlos Gonzlez |
Consulta¶
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'));
Resultado¶
CustomerID |
ContactName |
|---|---|
VINET |
Paul Henriot |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-EWI-TS0075: Procedimento incorporado não suportado.
STR UDF¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Esse UDF personalizados converte dados numéricos em dados de caracteres.
Sobrecargas personalizadas de UDF¶
Parâmetros¶
FLOAT_EXPR: Uma expressão numérica a ser convertida em varchar.
FORMAT: Uma expressão varchar com o comprimento e o número de casas decimais do varchar resultante. Esse formato é gerado automaticamente no SnowConvert.
UDF¶
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¶
Consulta¶
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;
Resultado¶
A |
B |
C |
D |
|---|---|---|---|
124 |
** |
123 |
123,5 |
Snowflake¶
Consulta¶
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;
SWITCHOFFSET_UDF¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Esse UDF personalizado é adicionado para retornar um valor datetimeoffset que é alterado do deslocamento de fuso horário armazenado para um novo deslocamento de fuso horário especificado.
Sobrecargas personalizadas de UDF¶
Parâmetros
source_timestamp: Um TIMESTAMP_TZ que pode ser resolvido para um valor datetimeoffset(n).
target_tz: Um varchar que representa o deslocamento do fuso horário
UDF¶
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¶
Consulta¶
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;
Resultado¶
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¶
Consulta¶
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;
Resultado¶
fr_time |
cr_time |
|---|---|
1998-09-20 7:45:50.71345 +02:00 |
1998-09-19 23:45:50.7134500 -06:00 |
Funções de metadados¶
Esta seção descreve os equivalentes funcionais das funções de metadados no Transact-SQL para código Snowflake SQL e JavaScript, orientados ao seu uso em procedimentos armazenados no SnowFlake.
DB_NAME¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna o nome de um banco de dados especificado.(DB_NAME no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DB_NAME ( [ database_id ] )
Snowflake SQL¶
CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/
Exemplos¶
SQL Server¶
SELECT DB_NAME();
Resultado:
RESULT |
|---|
ADVENTUREWORKS2019 |
Snowflake SQL¶
SELECT
CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/;
Resultado:
RESULT |
|---|
ADVENTUREWORKS2019 |
Problemas conhecidos¶
1. A função CURRENT_DATABASE tem um comportamento diferente em determinados casos
A função DB_NAME pode ser chamada com o parâmetro database_id, que retorna o nome do banco de dados especificado. Sem parâmetros, a função retorna o nome do banco de dados atual. No entanto, o SnowFlake não é compatível com esse parâmetro e a função CURRENT_DATABASE sempre retornará o nome do banco de dados atual.
EWIs relacionados¶
SSC-FDM-TS0010: A função CURRENT_DATABASE tem comportamento diferente em determinados casos.
OBJECT_ID¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna o número de identificação do objeto do banco de dados de um objeto com escopo de esquema.(OBJECT_ID no Transact-SQL).
Sintaxe do SQL Server¶
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
Amostra de padrões da origem¶
1. Default transformation¶
SQL Server¶
IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
Snowflake SQL¶
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¶
SQL Server¶
IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
Snowflake SQL¶
IF (
OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
3. Different object names¶
SQL Server¶
IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
Snowflake SQL¶
IF (
OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
DROP TABLE IF EXISTS TABLE1;
END IF;
Problemas conhecidos¶
1. A função OBJECT_ID_UDF tem um comportamento diferente em determinados casos
OBJECT_ID retorna o número de identificação do objeto, mas OBJECT_ID_UDF retorna um valor booliano, de modo que eles são equivalentes somente quando OBJECT_ID é usado com a condição not null.
EWIs relacionados¶
SSC-EWI-0001: Token não reconhecido na linha do código-fonte.
SSC-FDM-0007: Elemento com dependências ausentes
Funções analíticas¶
Esta seção descreve os equivalentes funcionais das funções analíticas no Transact-SQL para código Snowflake SQL e JavaScript, orientados para a criação de UDFs no Snowflake.
LAG¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Acessa dados de uma linha anterior no mesmo conjunto de resultados sem usar uma autojunção começando com SQL Server 2012 (11.x). LAG fornece acesso a uma linha em um determinado offset físico que vem antes da linha atual. Use esta função analítica em uma instrução SELECT para comparar os valores da linha atual com os valores de uma linha anterior. (COUNT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
LAG (scalar_expression [,offset] [,default])
OVER ( [ partition_by_clause ] order_by_clause )
Snowflake SQL¶
COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Exemplos¶
SQL Server¶
SELECT TOP 10
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL
FROM HumanResources.Employee E
Resultado:
PREVIOUS |
ACTUAL |
|---|---|
NULL |
10 |
10 |
89 |
89 |
10 |
10 |
48 |
48 |
0 |
0 |
95 |
95 |
55 |
55 |
67 |
67 |
84 |
84 |
85 |
Snowflake SQL¶
SELECT TOP 10
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL
FROM
HumanResources.Employee E;
Resultado:
PREVIOUS |
ACTUAL |
|---|---|
NULL |
10 |
10 |
89 |
89 |
10 |
10 |
48 |
48 |
0 |
0 |
95 |
95 |
55 |
55 |
67 |
67 |
84 |
84 |
85 |
Funções de tipo de dados¶
Esta seção descreve os equivalentes funcionais das funções de tipo de dados no Transact-SQL para código Snowflake SQL e JavaScript.
DATALENGTH¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna o número de bytes usados para representar qualquer expressão. (DATALENGTH no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DATALENGTH ( expression )
Snowflake SQL¶
OCTET_LENGTH(<string_or_binary>)
Exemplos¶
SQL Server¶
SELECT DATALENGTH('SomeString') AS SIZE;
Resultado:
SIZE |
|---|
10 |
Snowflake SQL¶
SELECT OCTET_LENGTH('SomeString') AS SIZE;
Resultado:
SIZE |
|---|
10 |
Funções matemáticas¶
Esta seção descreve os equivalentes funcionais das funções matemáticas no Transact-SQL para código Snowflake SQL e JavaScript, orientados ao seu uso em procedimentos armazenados no SnowFlake.
ABS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Uma função matemática que retorna o valor absoluto (positivo) da expressão numérica especificada. (ABS altera valores negativos para valores positivos. ABS não tem efeito sobre valores zero ou positivos) (ABS no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
ABS( expression )
Snowflake SQL¶
ABS( <num_expr> )
JavaScript¶
Documentação completa do JavaScript
Math.abs( expression )
Exemplos¶
SQL Server¶
SELECT ABS(-5);
Resultado:
ABS(-5) |
|---|
5 |
Snowflake SQL¶
SELECT ABS(-5);
Resultado:
ABS(-5) |
|---|
5 |
JavaScript¶
CREATE OR REPLACE FUNCTION compute_abs(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.abs(A);
$$
;
SELECT COMPUTE_ABS(-5);
Resultado:
COMPUTE_ABS(-5) |
|---|
5 |
AVG¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Nota
A seção de código do auxiliar de SnowConvert AI é omitida.
Essa função retorna a média dos valores em um grupo. Ela ignora valores nulos. (AVG no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
AVG ( [ ALL | DISTINCT ] expression )
[ OVER ( [ partition_by_clause ] order_by_clause ) ]
Snowflake SQL¶
AVG( [ DISTINCT ] <expr1> )
AVG( [ DISTINCT ] <expr1> ) OVER (
[ PARTITION BY <expr2> ]
[ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
)
Exemplos¶
SQL Server¶
SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
Resultado:
AVG_VACATIONS |
|---|
50 |
Snowflake SQL¶
SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
Resultado:
AVG_VACATIONS |
|---|
50 |
CEILING¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Uma função matemática que retorna o menor número inteiro maior/igual ao número enviado como parâmetro (CEILING no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
CEILING( expression )
Snowflake SQL¶
CEIL( <input_expr> [, <scale_expr> ] )
JavaScript¶
Math.ceil( expression )
Exemplos¶
SQL Server¶
SELECT CEILING(642.20);
Resultado:
CEILING(642.20) |
|---|
643 |
Snowflake SQL¶
SELECT CEIL(642.20);
Resultado:
CEIL(642.20) |
|---|
643 |
JavaScript¶
CREATE OR REPLACE FUNCTION compute_ceil(a double)
RETURNS double
LANGUAGE JAVASCRIPT
AS
$$
return Math.ceil(A);
$$
;
SELECT COMPUTE_CEIL(642.20);
Resultado:
COMPUTE_CEIL(642.20)|
--------------------|
643|
FLOOR¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o maior número inteiro menor ou igual à expressão numérica especificada. (FLOOR no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
FLOOR ( numeric_expression )
Snowflake SQL¶
FLOOR( <input_expr> [, <scale_expr> ] )
Exemplos¶
SQL Server¶
SELECT FLOOR (124.87) AS FLOOR;
Resultado:
FLOOR|
-----|
124|
Snowflake SQL¶
SELECT FLOOR (124.87) AS FLOOR;
Resultado:
FLOOR|
-----|
124|
POWER¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o valor da expressão especificada para a potência especificada. (POWER no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
POWER ( float_expression , y )
Snowflake SQL¶
POW(x, y)
POWER (x, y)
Exemplos¶
SQL Server¶
SELECT POWER(2, 10.0) AS IntegerResult
Resultado:
IntegerResult |
--------------|
1024|
Snowflake SQL¶
SELECT POWER(2, 10.0) AS IntegerResult;
Resultado:
IntegerResult |
--------------|
1024|
Documentação relacionada¶
ROUND¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um valor numérico, arredondado para o comprimento ou precisão especificados. (ROUND no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
ROUND ( numeric_expression , length [ ,function ] )
Snowflake SQL¶
ROUND( <input_expr> [, <scale_expr> ] )
Exemplos¶
SQL Server¶
SELECT ROUND(123.9994, 3) AS COL1, ROUND(123.9995, 3) AS COL2;
Resultado:
COL1 |COL2 |
--------|--------|
123.9990|124.0000|
Snowflake SQL¶
SELECT ROUND(123.9994, 3) AS COL1,
ROUND(123.9995, 3) AS COL2;
Resultado:
COL1 | COL2 |
--------|------|
123.999|124.000|
Documentação relacionada¶
SQRT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a raiz quadrada do valor de float especificado. (SQRT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SQRT ( float_expression )
Snowflake SQL¶
SQRT(expr)
Exemplos¶
SQL Server¶
SELECT SQRT(25) AS RESULT;
Resultado:
RESULT|
------|
5.0|
Snowflake SQL¶
SELECT SQRT(25) AS RESULT;
Resultado:
RESULT|
------|
5.0|
SQUARE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o quadrado do valor float especificado. (SQUARE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SQUARE ( float_expression ) ****
Snowflake SQL¶
SQUARE(expr)
Exemplos¶
SQL Server¶
SELECT SQUARE (5) AS SQUARE;
Resultado:
SQUARE|
------|
25.0|
Snowflake SQL¶
SELECT SQUARE (5) AS SQUARE;
Resultado:
SQUARE|
------|
25|
STDEV¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Retorna o desvio padrão estatístico de todos os valores na expressão especificada. (STDEV no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
STDEV ( [ ALL | DISTINCT ] expression )
Snowflake SQL¶
STDDEV( [ DISTINCT ] <expression_1> )
Exemplos¶
SQL Server¶
SELECT
STDEV(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS STDEV;
Resultado:
STDEV|
----------------|
28.7862150320948|
Snowflake SQL¶
SELECT
STDDEV(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS STDEV;
Resultado:
STDEV|
------------|
28.786215034|
STDEVP¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Retorna o desvio padrão estatístico da população para todos os valores na expressão especificada. (STDVEP no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
STDEVP ( [ ALL | DISTINCT ] expression )
Snowflake SQL¶
STDDEV_POP( [ DISTINCT ] expression_1)
Exemplos¶
SQL Server¶
SELECT
STDEVP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
HumanResources.Employee;
Resultado:
STDEVP_VACATIONHOURS|
--------------------|
28.736540767245085|
Snowflake SQL¶
SELECT
STDDEV_POP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
HumanResources.Employee;
Resultado:
STDEVP_VACATIONHOURS|
--------------------|
28.736540763|
VAR¶
Applies to
SQL Server
Azure Synapse Analytics
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Retorna a variância estatística de todos os valores na expressão especificada. (VAR no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
VAR ( [ ALL | DISTINCT ] expression )
Snowflake SQL¶
VAR_SAMP( [DISTINCT] <expr1> )
Exemplos¶
SQL Server¶
SELECT
VAR(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS VAR;
Resultado:
VAR|
----------------|
28.7862150320948|
Snowflake SQL¶
SELECT
VAR_SAMP(VACATIONHOURS)
FROM
HUMANRESOURCES.EMPLOYEE AS VAR;
Resultado:
VAR|
----------|
828.646176|
POWER¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o valor da expressão especificada para uma potência específica.\ (POWER no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
POWER( base, exp )
Argumentos¶
base: Base do número, deve ser uma expressão float.\ exp: Potência à qual você eleva a base.
Tipo de retorno¶
O tipo de retorno depende da expressão de entrada:
| 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 |
Exemplos¶
Consulta¶
SELECT POWER(2, 3)
Resultado¶
POWER(2, 3)|
-----------|
8.0|
POW no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a base da potência do expoente.\ (Documentação da função JavaScript POW).
Amostra de padrão de origem¶
Sintaxe¶
Math.pow( base, exp )
Argumentos¶
base: Base do número, deve ser uma expressão float.\ exp: Potência à qual você eleva a base.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
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);
Resultado¶
COMPUTE_POW(2, 3)|
-----------------|
8|
ACOS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-seno em radianos do número enviado como parâmetro (ACOS no Transact-SQL).
Matematicamente, o arco-seno é a função inversa do cosseno, resultando na seguinte definição:\ $$y = cos^{-1} \Leftrightarrow x = cos(y)$$
Para $$y = cos^{-1}(x)$$:\ - Range: $$0\leqslant y \leqslant \pi$$ or $$0^{\circ}\leqslant y \leqslant 180^{\circ}$$\ - Domain: $$-1\leqslant x \leqslant 1$$
Amostra de padrão de origem¶
Sintaxe¶
ACOS ( expression )
Argumentos¶
expressão: Expressão de float numérico, em que a expressão está em $$[-1,1]$$.
Tipo de retorno¶
Expressão numérica de flutuação entre 0 e π. Se a expressão numérica enviada pelo parâmetro estiver fora do domínio $$[-1, 1]$$, o mecanismo de banco de dados emitirá um erro.
Exemplos¶
Consulta¶
SELECT ACOS(-1.0);
Resultado¶
ACOS(-1.0) |
-----------------|
3.141592653589793|
ACOS no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-seno de um número especificado\ (Documentação da função JavaScript ACOS).
Amostra de padrão de origem¶
Sintaxe¶
Math.acos( expression )
Argumentos¶
expression: Expressão numérica, em que a expressão está em $$[-1,1]$$.
Tipo de retorno¶
Expressão numérica entre 0 e π. Se a expressão numérica enviada pelo parâmetro estiver fora do intervalo do arco-seno em radianos $$[-1, 1]$$, a função retornará NaN.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION compute_acos(a double)
RETURNS double
LANGUAGE JAVASCRIPT
AS
$$
return Math.acos(A);
$$
;
SELECT COMPUTE_ACOS(-1);
Resultado¶
COMPUTE_ACOS(-1)|
---------------|
3.141592654|
ASIN¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-seno em radianos do número enviado como parâmetro (ASIN no Transact-SQL).
O arco-seno é a função inversa do seno, resumida na definição a seguir:\ $$y = sin^{-1} \Leftrightarrow x = sin(x)$$
Para $$y = sin^{-1}(x)$$:\ - Range: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ ou $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - Domain: $$-1\leqslant x \leqslant 1$$
Amostra de padrão de origem¶
Sintaxe¶
ASIN( expression )
Argumentos¶
expressão: Expressão de float numérico, em que a expressão está em $$[-1,1]$$.
Tipo de retorno¶
Expressão numérica flutuante entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$. Se a expressão numérica enviada pelo parâmetro não estiver em $$[-1, 1]$$, o mecanismo de banco de dados emitirá um erro.
Exemplos¶
Consulta¶
SELECT ASIN(0.5);
Resultado¶
ASIN(0.5) |
------------------|
0.5235987755982989|
ASIN no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-seno de um número especificado\ (Documentação da função JavaScript ASIN).
Amostra de padrão de origem¶
Sintaxe¶
Math.asin( expression )
Argumentos¶
expression: Expressão numérica, em que a expressão está em $$[-1,1]$$.
Tipo de retorno¶
Expressão numérica entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$. Se a expressão numérica enviada pelo parâmetro estiver fora do domínio do arco-seno $$[-1, 1]$$, a função retornará NaN.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION compute_asin(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.asin(A);
$$
;
SELECT COMPUTE_ASIN(0.5);
Resultado¶
COMPUTE_ASIN(1) |
------------------|
0.5235987756|
COS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o cosseno do ângulo enviado por meio de parâmetros (deve ser medido em radianos) (COS no Transact-SQL).
O cosseno é definido como:\ $$y = cos(x)$$\ Onde:\ - Range: $$-1\leqslant y \leqslant 1$$\ - Domain: $$\mathbb{R}$$
Amostra de padrão de origem¶
Sintaxe¶
COS( expression )
Argumentos¶
expression: Expressão numérica float, em que a expressão está em $$\mathbb{R}$$.
Tipo de retorno¶
Expressão numérica flutuante em $$[-1, 1]$$.
Exemplos¶
Consulta¶
SELECT COS(PI())
Resultado¶
COS(PI())|
---------|
-1.0|
COS no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função estática que retorna o cosseno de um ângulo em radianos\ (Documentação da funçãoJavaScript COS).
Amostra de padrão de origem¶
Sintaxe¶
Math.cos( expression )
Argumentos¶
expression: Expressões numéricas.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION compute_cos(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.cos(ANGLE);
$$
;
SELECT COMPUTE_COS(PI());
Resultado¶
COMPUTE_COS(PI())|
-----------------|
-1|
COT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna a cotangente do ângulo em radianos enviada por meio de parâmetros (COT no Transact-SQL).
O cosseno é definido como:\ $$cot(x) = \frac{cos(x)}{sin(x)}$$ ou $$cot(x) = \frac{1}{tan(x)}$$\ Para calcular o cosseno, o parâmetro deve estar em conformidade com as restrições das funções seno e cosseno.
Amostra de padrão de origem¶
Sintaxe¶
COT( expression )
Argumentos¶
expression: Expressão numérica float, em que a expressão está em $$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$.
Tipo de retorno¶
Expressão numérica de float em $$\mathbb{R}$$.
Exemplos¶
Consulta¶
SELECT COT(1)
Resultado¶
COT(1) |
------------------|
0.6420926159343306|
COT no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Infelizmente, o objeto Mathno JavaScript não fornece um método para calcular a cotangente de um determinado ângulo.\ Isso poderia ser calculado usando a equação: $$cot(x) = \frac{cos(x)}{sin(x)}$$
Amostra de padrão de origem¶
Exemplo de implementação¶
function cot(angle){
return Math.cos(angle)/Math.sin(angle);
}
Argumentos¶
angle: Expressão numérica em radianos.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
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);
Resultado¶
COMPUTE_COT(1); |
------------------|
0.6420926159343308|
RADIANS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte graus em radianos.\ (RADIANS no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
RADIANS( expression )
Argumentos¶
expression: Expressão numérica em graus.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica em radianos.
Exemplos¶
Consulta¶
SELECT RADIANS(180.0)
Resultado¶
RADIANS(180) |
|---|
3.141592653589793116 |
Nota
Converta o parâmetro dessa função em float, caso contrário, a instrução acima retornará 3 em vez do valor PI.
RADIANS no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
O JavaScript não fornece um método para converter graus em radianos de um determinado ângulo.\ Isso pode ser calculado usando a equação: $$Radians = \frac{\pi}{180^{\circ}} \cdot angle$$
Amostra de padrão de origem¶
Exemplo de implementação¶
function radians(angle){
return (Math.PI/180) * angle;
}
Argumentos¶
angle: Expressão flutuante em graus.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica em radianos.
Exemplos¶
Consulta¶
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);
Resultado¶
RADIANS(180) |
|---|
3.141592654 |
PI¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o valor constante de PI\ (PI no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
PI( )
Argumentos¶
Esse método não recebe nenhum parâmetro.
Tipo de retorno¶
Float.
Exemplos¶
Consulta¶
CREATE PROCEDURE CIRCUMFERENCE @radius float
AS
SELECT 2 * PI() * @radius;
GO:
EXEC CIRCUMFERENCE @radius = 2;
Resultado¶
CIRCUMFERENCE @radius = 2 |
--------------------------|
12.5663706143592|
PI no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Constante que representa o número PI (aproximadamente 3,141592…)\ (Documentação do JavaScript PI).
Amostra de padrão de origem¶
Sintaxe¶
Math.PI
Exemplos¶
Consulta¶
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);
Resultado¶
CIRCUMFERENCE(2)|
------------------|
12.566370614359172|
DEGREES¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte o ângulo em radianos enviado por meio de parâmetros para graus (DEGREES no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
DEGREES( expression )
Argumentos¶
expression: Expressão float numérico em radianos.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
SELECT DEGREES(PI())
Resultado¶
DEGREES(PI())|
-------------|
180.0|
DEGREES no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
O JavaScript não fornece um método para converter radianos em graus de um determinado ângulo.\ Isso pode ser calculado usando a equação: $$Degrees = \frac{180^{\circ}}{\pi} \cdot angle$$
Amostra de padrão de origem¶
Exemplo de implementação¶
function degress(angle){
return (180/Math.PI) * angle;
}
Argumentos¶
angle: Expressão numérica em radianos.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
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());
Resultado¶
COMPUTE_DEGREES(PI())|
---------------------|
180.0|
LOG¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o logaritmo natural de um número\ (LOG no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
LOG( expression [, base ] )
Argumentos¶
expression: Expressão numérica.
base (opcional): Base para calcular o logaritmo de um número; por padrão, é Euler.
Tipo de retorno¶
Float.
Exemplos¶
Consulta¶
SELECT LOG(8, 2)
Resultado¶
LOG(8, 2) |
-----------|
3|
LOG no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o logaritmo usando o número de Euler como base. (Documentação da função JavaScript LOG).
Aviso
Infelizmente, o JavaScript não oferece um método que receba uma base de logaritmo por meio de seus parâmetros, mas isso pode ser resolvido dividindo a base pelo argumento.
Amostra de padrão de origem¶
Sintaxe¶
Math.log( expression )
Argumentos¶
expression: Expressão numérica. Deve ser positivo, caso contrário, retorna NaN.\
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
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);
Resultado¶
BASE_LOG(2, 8)|
--------------|
3|
ATAN¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-tangente em radianos do número enviado como parâmetro (ATAN no Transact-SQL).
O arco-tangente é a função inversa da tangente, resumida na definição a seguir:\ $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$
Para $$y = tan^{-1}(x)$$:\ - Range: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ ou $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$\ - Domain: $$\mathbb{R}$$
Amostra de padrão de origem¶
Sintaxe¶
ATAN( expression )
Argumentos¶
expression: Expressão float numérica, ou um tipo numérico que pode ser convertido em float.
Tipo de retorno¶
Expressão numérica flutuante entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$.
Exemplos¶
Consulta¶
SELECT ATAN(-30);
Resultado¶
ATAN(-30) |
-------------------|
-1.5374753309166493|
ATAN no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-tangente de um número especificado\ (Documentação da função JavaScript ATAN).
Amostra de padrão de origem¶
Sintaxe¶
Math.atan( expression )
Argumentos¶
expression: Expressão numérica.
Tipo de retorno¶
Expressão numérica entre $$-\frac{\pi}{2}$$ e $$\frac{\pi}{2}$$.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION compute_atan(a float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.atan(A);
$$
;
SELECT COMPUTE_ATAN(-30);
Resultado¶
COMPUTE_ATAN(-30)|
-----------------|
-1.537475331|
ATN2¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-tangente em radianos de duas coordenadas enviadas como parâmetro (ATN2 no Transact-SQL).
Para $$z = tan^{-1}(x, y)$$:\ - Range: $$-\pi\leqslant z \leqslant \pi$$ ou $$-180^{\circ}\leqslant z \leqslant 180^{\circ}$$\ - Domain: $$\mathbb{R}$$
Amostra de padrão de origem¶
Sintaxe¶
ATN2( expression_1, expression_2 )
Argumentos¶
expression1e expression2: Expressões numéricas.
Tipo de retorno¶
Expressão numérica entre $$-\pi$$ e $$\pi$$.
Exemplos¶
Consulta¶
SELECT ATN2(7.5, 2);
Resultado¶
ATN2(7.5, 2) |
------------------|
1.3101939350475555|
ATAN2 no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Função que retorna o arco-tangente de dois parâmetros\ (Documentação da função JavaScript ATAN2).
Amostra de padrão de origem¶
Sintaxe¶
Math.atan2( expression_1, expression_2 )
Argumentos¶
expression_1e expression_2: Expressões numéricas.
Tipo de retorno¶
Expressão numérica entre $$-\pi$$ e $$\pi$$.
Exemplos¶
Consulta¶
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);
Resultado¶
ATAN2(7.5, 3) |
------------------|
1.310193935|
LOG10¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o logaritmo de base 10 de um número\ (LOG10 no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
LOG10( expression )
Argumentos¶
expression: Expressão numérica, deve ser positiva.
Tipo de retorno¶
Float.
Exemplos¶
Consulta¶
SELECT LOG10(5)
Resultado¶
LOG10(5) |
-----------------|
0.698970004336019|
LOG10 no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o logaritmo de base 10 de um número\ (Documentação da função JavaScript LOG10).
Amostra de padrão de origem¶
Sintaxe¶
Math.log10( expression )
Argumentos¶
expression: Expressão numérica. Deve ser positivo, caso contrário, retorna NaN.\
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
CREATE OR REPLACE FUNCTION compute_log10(argument float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
return Math.log10(ARGUMENT);
$$
;
SELECT COMPUTE_LOG10(7.5);
Resultado¶
COMPUTE_LOG10(5)|
----------------|
0.6989700043|
EXP¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o valor exponencial de Euler (EXP no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
EXP( expression )
Argumentos¶
expression: Expressão numérica.
Tipo de retorno¶
O mesmo tipo de dados enviado por meio do parâmetro como uma expressão numérica.
Exemplos¶
Consulta¶
SELECT EXP(LOG(20)), LOG(EXP(20))
GO
Resultado¶
EXP(LOG(20)) |LOG(EXP(20)) |
---------------|----------------|
20.0| 20.0|
EXP no JS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Constante que representa o número de Euler (aproximadamente 2,718…)\ (Documentação do número de Euler no JavaScript) \ O JavaScript permite fazer diferentes operações usando essa constante, em vez do Transact-SQL, que suporta apenas o exponencial de Euler.
Amostra de padrão de origem¶
Sintaxe¶
Math.E
Exemplos¶
Consulta¶
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));
Resultado¶
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------|--------------------|
20.0| 20.0|
Funções de conversão¶
Esta seção descreve os equivalentes funcionais das funções de data e hora no Transact-SQL para código Snowflake SQL.
CONVERT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte uma expressão de um tipo de dados em outro. (CONVERT no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Snowflake SQL¶
CAST( <source_expr> AS <target_data_type> )
Exemplos¶
SQL Server¶
SELECT CONVERT(INT, '1998') as MyDate
Resultado¶
MyDate |
|---|
1998 |
Snowflake SQL¶
SELECT
CAST('1998' AS INT) as MyDate;
Resultado¶
MYDATE |
|---|
1998 |
Converter o tipo de data em varchar¶
SQL Server¶
SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
Resultado¶
RESULT |
|---|
12/08/22 |
Snowflake SQL¶
SELECT
TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy') AS RESULT;
Resultado¶
RESULT |
|---|
12/08/22 |
Converter o tipo de data em varchar com tamanho¶
SQL Server¶
SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
Resultado¶
RESULT |
|---|
07 |
Snowflake SQL¶
SELECT
LEFT(TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy'), 2) AS RESULT;
Resultado¶
RESULT |
|---|
07 |
Os formatos suportados para conversões de datas são:
Formatos de data
Código |
Formato |
|---|---|
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 |
Formatos de hora
Código |
Formato |
|---|---|
8 |
hh:mm:ss |
14 |
hh:mm:ss:ff3 |
24 |
hh:mm:ss |
108 |
hh:mm:ss |
114 |
hh:mm:ss:ff3 |
Formatos de data e hora
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 |
Datas do calendário islâmico
Código |
Formato |
|---|---|
130 |
dd mmm yyyy hh:mi:ss:ff3 AM/PM |
131 |
dd mmm yyyy hh:mi:ss:ff3 AM/PM |
Se não houver correspondência de padrão com o código atual, ele será formatado para yyyy-mm-dd hh:mm:ss
TRY_CONVERT¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um valor convertido para o tipo de dados especificado se a conversão for bem-sucedida; caso contrário, retorna nulo.
(Referência da linguagem SQL Server TRY_CONVERT)
Sintaxe¶
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
Padrões de origem¶
Transformação básica¶
Para transformar essa função, primeiro temos que verificar os parâmetros de TRY_CONVERT.
TRY_CONVERT( INT, 'test')
Se a expressão que precisa ser convertida for uma cadeia de caracteres, ela será transformada em TRY_CAST, que é uma função do Snowflake.
TRY_CAST( 'test' AS INT)
TRY_CAST¶
TRY_CAST compartilha a mesma transformação com TRY_CONVERT.
Exemplo¶
Servidor Sql¶
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;
O resultado será o mesmo do exemplo de 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 BINARY(8)) 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;
Problemas conhecidos¶
Se o tipo de dados for Varchar ou Char, ele será transformado de forma diferente.
TRY_CONVERT(VARCHAR, 1234);
TRY_CONVERT(CHAR, 1);
Se TRY_CAST for usado com VARCHAR ou CHAR no Snowflake, isso causará um erro e, portanto, será transformado em
TO_VARCHAR(1234);
TO_CHAR(1);
O mesmo acontece com os tipos de dados de SQL_VARIANT e GEOGRAPHY.
TRY_CONVERT(SQL_VARIANT, '2017-01-01 12:00:00');
TRY_CONVERT(GEOGRAPHY, 'LINESTRING(-122.360 47.656, -122.343 47.656 )');
São transformados em
TO_VARIANT('2017-01-01 12:00:00');
TO_GEOGRAPHY('LINESTRING(-122.360 47.656, -122.343 47.656 )');
Se a expressão não for uma cadeia de caracteres, há uma grande chance de falha, pois TRY_CAST do Snowflake funciona somente com expressões de cadeia de caracteres.
Nesse caso, será feita outra transformação
TRY_CAST(14.85 AS INT)
Será transformado em
CAST(14.85 AS INT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/
Agora, com essas transformações, pode haver problemas dependendo do que está sendo feito com as funções. TRY_CONVERT de SqlServer retorna nulos se a conversão não for possível.
Isso pode ser usado para fazer a seguinte lógica
SELECT
CASE
WHEN TRY_CONVERT( INT, 'Expression') IS NULL
THEN 'FAILED'
ELSE 'SUCCEDDED'
END;
Esse tipo de condição com TRY_CONVERT pode ser usado com TRY_CAST, mas o que acontece se ele for transformado em TO_VARCHAR, TOCHAR ou no CAST? Se a conversão nessas funções falhar, ela causará um erro em vez de simplesmente retornar nulo.
Exemplos¶
Neste exemplo, temos vários TRY_CONVERT com diferentes tipos de dados
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;
Se migrarmos essa seleção, obteremos o seguinte resultado
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 BINARY(8)) /*** 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;
Vamos executar cada uma delas e comparar o resultado.
Alias |
Resultado do SqlServer |
Resultado do 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 relacionados¶
SSC-FDM-TS0005: TRY_CONVERT/TRY_CAST não pôde ser convertido em TRY_CAST.
Funções de data e hora¶
Esta seção descreve os equivalentes funcionais das funções de data e hora no Transact-SQL para código Snowflake SQL e JavaScript.
AT TIME ZONE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Converte um inputdate para o valor datetimeoffset correspondente no fuso horário de destino. (AT TIME ZONE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
inputdate AT TIME ZONE timezone
Snowflake SQL¶
CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> )
CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Exemplos¶
SQL Server¶
SELECT CAST('2022-11-24 11:00:45.2000000 +00:00' as datetimeoffset) at time zone 'Alaskan Standard Time';
Resultado:
DATE|
------------------------------|
2022-11-24 02:00:45.200 -09:00|
Snowflake SQL¶
SELECT
CONVERT_TIMEZONE('America/Anchorage', CAST('2022-11-24 11:00:45.2000000 +00:00' as TIMESTAMP_TZ(7)));
Resultado:
DATE|
------------------------------|
2022-11-24 02:00:45.200 -09:00|
SQL Server¶
SELECT current_timestamp at time zone 'Central America Standard Time';
Resultado:
DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
Snowflake SQL¶
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 ***/);
Resultado:
DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
Problemas conhecidos¶
O Snowflake não oferece suporte a todos os fusos horários que o SQL Server oferece. Você pode verificar os fusos horários compatíveis neste link.
SQL Server¶
SELECT current_timestamp at time zone 'Turks And Caicos Standard Time';
Resultado:
DATE|
------------------------------|
2022-12-14 20:04:18.317 -05:00|
Snowflake SQL¶
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0063 - TIME ZONE NOT SUPPORTED IN SNOWFLAKE ***/!!!
CURRENT_TIMESTAMP() at time zone 'Turks And Caicos Standard Time';
EWIs relacionados¶
SSC-FDM-TS0024: CURRENT_TIMESTAMP na instrução At Time Zone pode ter um comportamento diferente em determinados casos.
SSC-EWI-TS0063: O fuso horário não é compatível com o Snowflake.
DATEADD¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna um número inteiro que representa datepart da data especificada. (DATEPART no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DATEADD (datepart , number , date )
Snowflake SQL¶
DATEADD( <date_or_time_part>, <value>, <date_or_time_expr> )
Exemplos¶
SQL Server¶
SELECT DATEADD(year,123, '20060731') as ADDDATE;
Resultado:
ADDDATE|
------------------------|
2129-07-31 00:00:00.000|
Snowflake SQL¶
SELECT
DATEADD(year, 123, '20060731') as ADDDATE;
Resultado:
ADDDATE|
------------------------|
2129-07-31 00:00:00.000|
DATEDIFF¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Esta função retorna a contagem (como um valor inteiro assinado) dos limites de datepart especificado cruzados entre a data de início e a data de término especificadas. (DATEDIFF no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DATEDIFF ( datepart , startdate , enddate )
Snowflake SQL¶
DATEDIFF( <date_or_time_part>, <date_or_time_expr1>, <date_or_time_expr2> )
Exemplos¶
SQL Server¶
SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
Resultado:
DIFF |
|---|
1 |
Snowflake SQL¶
SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
Resultado:
DIFF |
|---|
1 |
DATEFROMPARTS¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna um valor date que mapeia os valores especificados de ano, mês e dia.(DATEFROMPARTS no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DATEFROMPARTS ( year, month, day )
Snowflake SQL¶
DATE_FROM_PARTS( <year>, <month>, <day> )
Exemplos¶
SQL Server¶
SELECT DATEFROMPARTS ( 2010, 12, 31 ) AS RESULT;
Resultado:
RESULT |
|---|
2022-12-12 |
Snowflake SQL¶
SELECT DATE_FROM_PARTS ( 2010, 12, 31 ) AS RESULT;
Resultado:
RESULT |
|---|
2022-12-12 |
DATENAME¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna uma cadeia de caracteres de número que representa datepart da data especificada. (DATENAME no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DATENAME ( datepart , date )
Snowflake SQL¶
Nota
Essa transformação usa várias funções, dependendo das entradas
DATE_PART( <date_or_time_part> , <date_or_time_expr> )
MONTHNAME( <date_or_timestamp_expr> )
DAYNAME( <date_or_timestamp_expr> )
Exemplos¶
SQL Server¶
SELECT DATENAME(month, getdate()) AS DATE1,
DATENAME(day, getdate()) AS DATE2,
DATENAME(dw, GETDATE()) AS DATE3;
Resultado:
DATE1 |
DATE2 |
DATE3 |
|---|---|---|
Maio |
3 |
Terça-feira |
Snowflake SQL¶
SELECT
MONTHNAME_UDF(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE1,
DAYNAME_UDF(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE2,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE3;
Resultado:
DATE1 |
DATE2 |
DATE3 |
|---|---|---|
Maio |
Ter |
Ter |
DATEPART¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna um número inteiro que representa datepart da data especificada. (DATEPART no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DATEPART ( datepart , date )
Snowflake SQL¶
DATE_PART( <date_or_time_part> , <date_or_time_expr> )
Exemplos¶
SQL Server¶
SELECT DATEPART(YEAR, '10-10-2022') as YEAR
Resultado:
YEAR |
|---|
2022 |
Snowflake SQL¶
SELECT
DATE_PART(YEAR, '10-10-2022' :: TIMESTAMP) as YEAR;
Resultado:
YEAR |
|---|
2022 |
DAY¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna um número inteiro que representa o dia (dia do mês) da data especificada. (DAY no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
DAY ( date )
Snowflake SQL¶
DAY( <date_or_timestamp_expr> )
Exemplos¶
SQL Server¶
SELECT DAY('10-10-2022') AS DAY
Resultado:
DAY |
|---|
10 |
Snowflake SQL¶
SELECT DAY('10-10-2022' :: TIMESTAMP) AS DAY;
Resultado:
DAY |
|---|
10 |
EOMONTH¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Essa função retorna o último dia do mês que contém uma data especificada, com um deslocamento opcional. (EOMONTH no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
EOMONTH ( start_date [, month_to_add ] )
Snowflake SQL¶
LAST_DAY( <date_or_time_expr> [ , <date_part> ] )
Exemplos¶
SQL Server¶
SELECT EOMONTH (GETDATE()) AS Result;
Resultado:
RESULT |
|---|
2022-05-31 |
Snowflake SQL¶
SELECT
LAST_DAY(DATEADD('month', 0, CURRENT_TIMESTAMP() :: TIMESTAMP)) AS Result;
Resultado:
RESULT |
|---|
2022-05-31 |
GETDATE¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna o carimbo de data/hora atual do sistema do banco de dados como um valor datetime sem o deslocamento do fuso horário do banco de dados. (GETDATE no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
GETDATE()
Snowflake SQL¶
CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )
Exemplos¶
SQL Server¶
SELECT GETDATE() AS DATE;
Resultado:
DATE |
|---|
2022-05-06 09:54:42.757 |
Snowflake SQL¶
SELECT CURRENT_TIMESTAMP() :: TIMESTAMP AS DATE;
Resultado:
DATE |
|---|
2022-05-06 08:55:05.422 |
MONTH¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um número inteiro que representa o mês da data especificada. (MONTH no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
MONTH( date )
Snowflake SQL¶
MONTH ( <date_or_timestamp_expr> )
Exemplos¶
SQL Server¶
SELECT MONTH('10-10-2022') AS MONTH
Resultado:
MONTH |
|---|
10 |
Snowflake SQL¶
SELECT MONTH('10-10-2022' :: TIMESTAMP) AS MONTH;
Resultado:
MONTH |
|---|
10 |
SWITCHOFFSET¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
O SWITCHOFFSET ajusta um determinado valor de carimbo de data/hora a um deslocamento de fuso horário específico. Isso é feito por meio de valores numéricos. Mais informações podem ser encontradas em SWITCHOFFSET (Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
Um auxiliar UDF realiza a equivalência funcional e também compartilha a mesma sintaxe da função SWITCHOFFSET do SQLServer.
SQLServer¶
SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )
Snowflake SQL¶
SWITCHOFFSET_UDF ( timestamp_tz_expression, timezoneoffset_expression )
Exemplo¶
SQLServer¶
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;
Resultado:
fr_time |
cr_time |
|---|---|
1998-09-20 7:45:50.71345 +02:00 |
1998-09-19 23:45:50.7134500 -06:00 |
Snowflake SQL¶
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;
Resultado:
fr_time |
cr_time |
|---|---|
1998-09-20 7:45:50.71345 +02:00 |
1998-09-19 23:45:50.7134500 -06:00 |
SYSDATETIME¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um valor datetime2(7) que contém a data e a hora do computador no qual a instância do SQL Server está sendo executada. (SYSDATETIME no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SYSDATETIME ( )
Snowflake SQL¶
LOCALTIME()
Exemplos¶
SQL Server¶
SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
Resultado:
SYSTEM_DATETIME |
|---|
2022-05-06 12:08:05.501 |
Snowflake SQL¶
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
Resultado:
SYSTEM_DATETIME |
|---|
211:09:14 |
SYSUTCDATETIME¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um valor datetime2(7) que contém a data e a hora do computador no qual a instância do SQL Server está sendo executada. (SYSUTCDATETIME no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
SYSUTCDATETIME ( )
Snowflake SQL¶
SYSDATE()
Exemplos¶
SQL Server¶
SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
Resultado:
SYSTEM_UTC_DATETIME |
|---|
2023-02-02 20:59:28.0926502 |
Snowflake SQL¶
SELECT
SYSDATE() as SYS_UTC_DATETIME;
Resultado:
SYSTEM_UTC_DATETIME |
|---|
2023-02-02 21:02:05.557 |
YEAR¶
Applies to
SQL Server
Azure Synapse Analytics
Descrição¶
Retorna um número inteiro que representa o ano da data especificada. (YEAR no Transact-SQL).
Amostra de padrão de origem¶
Sintaxe¶
SQL Server¶
YEAR( date )
Snowflake SQL¶
YEAR ( <date_or_timestamp_expr> )
Exemplos¶
SQL Server¶
SELECT YEAR('10-10-2022') AS YEAR
Resultado:
YEAR |
|---|
2022 |
Snowflake SQL¶
SELECT YEAR('10-10-2022' :: TIMESTAMP) AS YEAR;
Resultado:
YEAR |
|---|
2022 |