SnowConvert AI – SQL Server – Azure Synapse – Integrierte Funktionen

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Weitere Informationen zu integrierten Funktionen und ihren Snowflake-Äquivalenten finden Sie auch unter Allgemeine integrierte Funktionen.

Aggregatfunktionen

TransactSQL

Snowflake

Anmerkungen

TransactSQL

Snowflake

Anmerkungen

APPROX_COUNT_DISTINCT

APPROX_COUNT_DISTINCT

AVG​

AVG

CHECKSUM_AGG

*noch zu definieren_

COUNT

COUNT

COUNT_BIG

*noch zu definieren_

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​

Analyse

TransactSQL

Snowflake

Anmerkungen

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

Sortierung

TransactSQL

Snowflake

Anmerkungen

COLLATIONPROPERTY

*noch zu definieren_

TERTIARY_WEIGHTS

*noch zu definieren_

Konfiguration

TransactSQL

Snowflake

Anmerkungen

​@@DBTS

*noch zu definieren_

@@LANGID

*noch zu definieren_

@@LANGUAGE

*noch zu definieren_

@@LOCK_TIMEOUT

*noch zu definieren_

@@MAX_CONNECTIONS

*noch zu definieren_

@@MAX_PRECISION

*noch zu definieren_

@@NESTLEVEL

*noch zu definieren_

@@OPTIONS

*noch zu definieren_

@@REMSERVER

*noch zu definieren_

@@SERVERNAME

CONCAT(„app.snowflake.com“, CURRENT_ACCOUNT( ))

@@SERVICENAME

*noch zu definieren_

@@SPID

*noch zu definieren_

@@TEXTSIZE

*noch zu definieren_

@@VERSION

*noch zu definieren_

Kann mit CURRENT_VERSION nachgeahmt werden

Konvertierung

TransactSQL

Snowflake

Anmerkungen

CAST

CAST

<p>Gibt NULL zurück, wenn der Wert keine Zahl ist, andernfalls wird der numerische Wert als sein zurückgegeben.<br>Bei Verwendung von Operatoren wie &#x3C;, >, =, &#x3C;> muss dann NULL folgen</p>

CONVERT

Überprüfen Sie CONVERT

Gleiche Verhaltensweise wie CAST

PARSE

*noch zu definieren_

TRY_CAST

TRY_CAST

<p>Gibt NULL zurück, wenn der Wert keine Zahl ist, andernfalls wird der numerische Wert als sein zurückgegeben.<br>Bei Verwendung von Operatoren wie &#x3C;, >, =, &#x3C;> muss dann NULL folgen</p>

TRY_CONVERT

*noch zu definieren_

Gleiche Verhaltensweise wie TRY_CAST

TRY_PARSE

TRY_CAST

Die Verhaltensweise kann unterschiedlich sein, wenn eine Ganzzahl als Datum oder Zeitstempel analysiert wird.

Kryptografisch

TransactSQL

Snowflake

Anmerkungen

ASYMKEY_ID

*noch zu definieren_

ASYMKEYPROPERTY

*noch zu definieren_

CERTENCODED

*noch zu definieren_

CERTPRIVATEKEY

*noch zu definieren_

DECRYPTBYASYMKEY

*noch zu definieren_

DECRYPTBYCERT

*noch zu definieren_

DECRYPTBYKEY

*noch zu definieren_

DECRYPTBYKEYAUTOASYMKEY

*noch zu definieren_

DECRYPTBYKEYAUTOCERT

*noch zu definieren_

DECRYPTBYPASSPHRASE

_*zu definieren_​

Kann mit DENCRYPT_RAW nachgeahmt werden

ENCRYPTBYASYMKEY

*noch zu definieren_

ENCRYPTBYCERT

*noch zu definieren_

ENCRYPTBYKEY

*noch zu definieren_

ENCRYPTBYPASSPHRASE

*noch zu definieren_

Kann mit ENCRYPT_RAW nachgeahmt werden

HASHBYTES

MD5, SHA1, SHA2

<p>Derzeit werden nur getrennte Hash-Werte unterstützt. Verwenden Sie je nach dem erforderlichen Algorithmus den passenden Wert.</p><p><strong>MD5</strong>, ist ein 32-stelliger hexadezimal-codierter Wert</p><p><strong>SHA1</strong>, hat eine 40-stellige hexadezimal-codierte Zeichenfolge, die den 160-Bit-Nachrichtenhash enthält</p><p><strong>SHA2</strong>, eine hexadezimal-codierte Zeichenfolge, die den N-Bit SHA-2-Nachrichtenhash enthält. Die Größen sind:</p><p>224 = SHA-224</p><p>256 = SHA-256 (Standard)</p><p>384 = SHA-384</p><p>512 = SHA-512</p>

IS_OBJECTSIGNED

*noch zu definieren_

KEY_GUID

*noch zu definieren_

KEY_ID

*noch zu definieren_

KEY_NAME

*noch zu definieren_

SIGNBYASYMKEY

*noch zu definieren_

SIGNBYCERT

*noch zu definieren_

SYMKEYPROPERTY

*noch zu definieren_

VERIGYSIGNEDBYCERT

*noch zu definieren_

Cursor

TransactSQL

Snowflake

Anmerkungen

@@CURSOR_ROWS

*noch zu definieren_

@@FETCH_STATUS

*noch zu definieren_

CURSOR_STATUS

*noch zu definieren_

Datentyp

TransactSQL

Snowflake

Anmerkungen

DATALENGTH

OCTET_LENGTH

​Snowflake verwendet keine Bruchteile von Bytes, daher wird die Länge immer als 8 * OCTET_LENGTH berechnet

IDENT_SEED

*noch zu definieren_

IDENT_CURRENT

*noch zu definieren_

IDENTITY

*noch zu definieren_

IDENT_INCR

*noch zu definieren_

SQL_VARIANT_PROPERTY

*noch zu definieren_

Datum & Uhrzeit

TransactSQL

Snowflake

Anmerkungen

@@DATEFIRST

*noch zu definieren_

@@LANGUAGE

*noch zu definieren_

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP

CURRENT_TIMEZONE

*noch zu definieren_

DATEADD

DATEADD

DATEDIFF

DATEDIFF

DATEDIFF_BIG

*noch zu definieren_

DATEFROMPARTS

DATE_FROM_PARTS

DATENAME

*noch zu definieren_

<p>Diese Funktion erhält zwei Argumente: „datepart“ und „date“. Sie gibt eine Zeichenfolge zurück. Hier sind die unterstützten „dateparts“ von TSQL in 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“), wobei nur ein englischer Monatsname mit drei Buchstaben angegeben wird<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“), wobei nur ein englischer Name des Tages mit drei Buchstaben angegeben wird<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> -> benötigt eine spezielle Implementierung, um den Zeitversatz zu erhalten</p>

DATEPART

DATE_PART

DATETIME2FROMPARTS

*noch zu definieren_

DATETIMEFROMPARTS

*noch zu definieren_

​Kann durch eine Kombination von DATE\_FROM_PARTS und TIME\_FROM\_PARTS nachgeahmt werden

DATETIMEOFFSETFROMPARTS

*noch zu definieren_

DAY

DAY

EOMONTH

*noch zu definieren_

Kann mit LAST_DAY nachgeahmt werden

GETDATE

GETDATE

GETUTCDATE

*noch zu definieren_

Kann mit CONVERT_TIMEZONE nachgeahmt werden

ISDATE

*noch zu definieren_

<p>Kann durch Verwendung von <strong>TRY_TO_DATE</strong> nachgeahmt werden</p><p>Gibt NULL zurück, wenn der Wert kein <strong>date</strong> ist, gibt andernfalls den Datumswert „as-is“ zurück.<br>Bei Verwendung von Operatoren wie &#x3C;, >, =, &#x3C;> muss eine NULL folgen</p>

MONTH

MONTH

SMALLDATETIMEFROMPARTS

*noch zu definieren_

​​Kann durch eine Kombination von DATE\_FROM_PARTS und TIME\_FROM\_PARTS nachgeahmt werden

SWITCHOFFSET

*noch zu definieren_

​Kann mit CONVERT_TIMEZONE nachgeahmt werden

SYSDATETIME

LOCALTIME

SYSDATETIMEOFFSET

*noch zu definieren_

​Kann mit CONVERT_TIMEZONE und LOCALTIME nachgeahmt werden

SYSUTCDATETIME

*noch zu definieren_

​​Kann mit CONVERT_TIMEZONE und LOCALTIME nachgeahmt werden

TIMEFROMPARTS

TIME_FROM_PARTS

TODATETIMEOFFSET

*noch zu definieren_

​Kann mit CONVERT_TIMEZONE nachgeahmt werden

YEAR

YEAR

JSON

TransactSQL

Snowflake

Anmerkungen

ISJSON

CHECK_JSON

​Das ist ein „Vorschau-Feature“ in Snowflake

JSON_VALUE

*noch zu definieren_

<p>Kann mit</p><p>TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH)) nachgeahmt werden</p>

JSON_QUERY

*noch zu definieren_

JSON_MODIFY

*noch zu definieren_

Mathematisch

TransactSQL

Snowflake

Anmerkungen

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

Logisch

TransactSQL

Snowflake

Anmerkungen

CHOOSE

*noch zu definieren_

Kann mit DECODE nachgeahmt werden

GREATEST

GREATEST

IIF

IIF

LEAST

LEAST

NULLIF

NULLIF

Metadaten

TransactSQL

Snowflake

Anmerkungen

TransactSQL

Snowflake

Anmerkungen

@@PROCID

*noch zu definieren_

APP_NAME

*noch zu definieren_

APPLOCK_MODE

*noch zu definieren_

APPLOCK_TEST

*noch zu definieren_

ASSEMBLYPROPERTY

*noch zu definieren_

COL_LENGTH

Eine UDF mit dem Namen COL_LENGTH_UDF ist zum Abrufen dieser Informationen vorgesehen. Diese UDF funktioniert nur mit VARCHAR-Typen, wie in der Transact-SQL-Dokumentation angegeben. Bei anderen Datentypen wird NULL zurückgegeben.

COL_NAME

*noch zu definieren_

COLUMNPROPERTY

*noch zu definieren_

DATABASE_PRINCIPAL_ID

*noch zu definieren_

Wird CURRENT_USER zugeordnet, wenn keine Argumente vorhanden sind

DATABASEPROPERTYEX

*noch zu definieren_

DB_ID

*noch zu definieren_

Wir empfehlen, zu CURRENT_DATABASE() zu wechseln. Falls diese Funktionalität emuliert werden muss:
SELECT DATE_PART(EPOCH,CREATED) FROM INFORMATION_SCHEMA-, ,.DATABASES WHERE DATABASE_NAME = ‚DB‘ ;
Kann etwas Ähnliches erreichen

DB_NAME

*noch zu definieren_

Wird meist in dem oben erwähnten Prozedurnamen verwendet

FILE_ID

*noch zu definieren_

FILE_IDEX

*noch zu definieren_

FILE_NAME

*noch zu definieren_

FILEGROUP_ID

*noch zu definieren_

FILEGROUP_NAME

*noch zu definieren_

FILEGROUPPROPERTY

*noch zu definieren_

FILEPROPERTY

*noch zu definieren_

FULLTEXTCATALOGPROPERTY

*noch zu definieren_

FULLTEXTSERVICEPROPERTY

*noch zu definieren_

INDEX_COL

*noch zu definieren_

INDEXKEY_PROPERTY

*noch zu definieren_

INDEXPROPERTY

*noch zu definieren_

NEXT VALUE FOR

*noch zu definieren_

OBJECT_DEFINITION

*noch zu definieren_

OBJECT_ID

*noch zu definieren_

Kann in den meisten Fällen ersetzt werden. Die meisten Fälle sehen wie folgt aus: IF OBJECT_ID(dbo.TABLE‘) IS NOT NULL DROP TABLE dbo.Table, was durch DROP TABLE IF EXISTS ersetzt werden kann (diese Syntax wird auch in SQL SERVER unterstützt). Wenn die Objekt-ID (object_id) repliziert werden muss, wird eine UDF in Abhängigkeit vom zweiten Parameter des Funktionsaufrufs hinzugefügt.

OBJECT_NAME

*noch zu definieren_

Kann ersetzt werden durch: CREATE OR REPLACE PROCEDURE FOO() RETURNS STRING LANGUAGE JAVASCRIPT AS ‚ var rs = snowflake.execute({sqlText:SELECT CURRENT_DATABASE() | '.' | ?, binds:[arguments.callee.name]}); rs.next(); var procname = rs.getColumnValue(1); return procname; ‚;

OBJECT_NAME(@@PROCID)

‚ObjectName‘

Diese Transformation findet nur statt, wenn sie sich innerhalb einer DeclareStatement befindet.

ObjectName ist der Name des TopLevelObject, das die Funktion enthält.

OBJECT_SCHEMA_NAME

*noch zu definieren_

OBJECT_SCHEMA_NAME(@@PROCID)

:OBJECT_SCHEMA_NAME

Diese Transformation findet nur statt, wenn sie sich innerhalb einer DeclareStatement befindet.

OBJECTPROPERTY

*noch zu definieren_

OBJECTPROPERTYEX

*noch zu definieren_

ORIGINAL_DB_NAME

*noch zu definieren_

PARSENAME

PARSENAME_UDF

Erstellt eine UDF, um das gleiche Verhalten der PARSENAME-Funktion zu emulieren.

*noch zu definieren_

SCHEMA_NAME

*noch zu definieren_

SCOPE_IDENTITY

*noch zu definieren_

Wenn dies erforderlich ist, würde ich empfehlen, Sequenzen zu verwenden und den Wert vor dem Einfügen zu erfassen

SERVERPROPERTY

*noch zu definieren_

STATS_DATE

*noch zu definieren_

TYPE_ID

*noch zu definieren_

TYPE_NAME

*noch zu definieren_

TYPEPROPERTY

*noch zu definieren_

VERSION

*noch zu definieren_

Rangliste

TransactSQL

Snowflake

Anmerkungen

DENSE_RANK

DENSE_RANK

NTILE

NTILE

RANK

RANK

ROW_NUMBER

ROW_NUMBER

Replikation

TransactSQL

Snowflake

Anmerkungen

PUBLISHINGSERVERNAME

*noch zu definieren_

Rowset

TransactSQL

Snowflake

Anmerkungen

OPENDATASOURCE

*noch zu definieren_

OPENJSON

*noch zu definieren_

QPENQUERY

*noch zu definieren_

OPENROWSET

*noch zu definieren_

OPENXML

OPENXML_UDF

Benutzerdefinierte Funktion, die als gleichwertige Verhaltensweise in Snowflake verwendet wird.

STRING_SPLIT

SPLIT_TO_TABLE

Das Flag „enable_ordinal“ in STRING_SPLIT von Transact-SQL wird nicht direkt von der SPLIT_TO_TABLE-Funktion von Snowflake unterstützt. Wenn die „ordinal“-Spalte erforderlich ist, wird eine benutzerdefinierte Funktion (UDF) namens STRING_SPLIT_UDF erzeugt, um dieses Verhalten zu replizieren. Beachten Sie, dass ohne die „ordinal“-Spalte STRING_SPLIT einen einzelnen Spaltenwert mit dem Namen „value“ zurückgibt, während SPLIT_TO_TABLE drei Spalten zurückgibt: „value“, „index“ (entspricht „ordinal“) und „seq“. Weitere Informationen finden Sie in der SPLIT_TO_TABLE-Dokumentation.

Sicherheit

TransactSQL

Snowflake

Anmerkungen

CERTENCODED

*noch zu definieren_

CERTPRIVATEKEY

*noch zu definieren_

CURRENT_USER

CURRENT_USER

DATABASE_PRINCIPAL_ID

*noch zu definieren_

HAS_PERMS_BY_NAME

*noch zu definieren_

IS_MEMBER

*noch zu definieren_

Ändern Sie die Abfrage INFORMATION_SCHEMA, auch wenn der Kunde möglicherweise neue Rollen definieren muss

IS_ROLEMEMBER

*noch zu definieren_

<p>Snowflake hat eine ähnliche Funktion</p><p><strong>IS_ROLE_IN_SESSION</strong></p>

IS_SRVROLEMEMBER

*noch zu definieren_

LOGINPROPERTY

*noch zu definieren_

ORIGINAL_LOGIN

*noch zu definieren_

PERMISSIONS

*noch zu definieren_

PWDCOMPARE

*noch zu definieren_

PWDENCRYPT

*noch zu definieren_

SCHEMA_ID

*noch zu definieren_

SCHEMA_NAME

*noch zu definieren_

SESSION_USER

*noch zu definieren_

SUSER_ID

*noch zu definieren_

SUSER_NAME

*noch zu definieren_

SUSER_SID

*noch zu definieren_

SUSER_SNAME

*noch zu definieren_

sys.fn_builtin_permissions

*noch zu definieren_

sys.fn_get_audit_file

*noch zu definieren_

sys.fn_my\_permissions

*noch zu definieren_

SYSTEM_USER

*noch zu definieren_

USER_ID

*noch zu definieren_

USER_NAME

*noch zu definieren_

Zuordnung zu CURRENT_USER

String

TransactSQL

Snowflake

Anmerkungen

ASCII

ASCII

CHAR

CHR, CHAR

CHARINDEX

CHARINDEX

CONCAT

CONCAT

CONCAT_WS

CONCAT_WS

COALESCE

COALESCE

DIFFERENCE

*noch zu definieren_

FORMAT

TO_CHAR

SSC-EWI-0006 oder SSC-FDM-0036 kann generiert werden, wenn das Format (numerisch oder Datum/Uhrzeit) nicht vollständig unterstützt wird.

LEFT

LEFT

LEN

LEN

LOWER

LOWER

LTRIM

LTRIM

NCHAR

*noch zu definieren_

PATINDEX

*noch zu definieren_

Zuordnung zu REGEXP_INSTR

QUOTENAME

QUOTENAME_UDF

Es wird eine UDF erstellt, um die gleiche Verhaltensweise der Funktion Quotename zu emulieren

REPLACE

REPLACE

REPLICATE

REPEAT

REVERSE

REVERSE

RIGHT

RIGHT

RTRIM

RTRIM

SOUNDEX

SOUNDEX

SPACE

*noch zu definieren_

STR

*noch zu definieren_

STRING_AGG

*noch zu definieren_

STRING_ESCAPE

*noch zu definieren_

STRING_SPLIT

SPLIT_TO_TABLE

STUFF

*noch zu definieren_

CREATE OR REPLACE FUNCTION STUFF(S-string, STARTPOS int, LENGTH int, NEWSTRING string) RETURNS-Zeichenfolge LANGUAGE SQL AS ‚ left(S, STARTPOS)

SUBSTRING

SUBSTRING

TRANSLATE

TRANSLATE

TRIM

TRIM

UNICODE

UNICODE

UPPER

UPPER

System

TransactSQL

Snowflake

Anmerkungen

$PARTITION

*noch zu definieren_

@@ERROR

*noch zu definieren_

@@IDENTITY

*noch zu definieren_

Wenn dies erforderlich ist, würde ich empfehlen, Sequenzen zu verwenden und den Wert vor dem Einfügen zu erfassen

@@PACK_RECEIVED

*noch zu definieren_

@@ROWCOUNT

*noch zu definieren_

@@TRANCOUNT

*noch zu definieren_

BINARY_CHECKSUM

*noch zu definieren_

CHECKSUM

*noch zu definieren_

COMPRESS

COMPRESS

<p>​Die Version von Snowflake verfügt über ein „method“-Argument, das die Komprimierungsmethode angibt. Dies sind die gültigen Werte: <strong>SNAPPY, ZLIB, ZSTD, BZ2</strong></p><p>Der Komprimierungsgrad wird in Klammern angegeben und muss eine nicht negative ganze Zahl sein</p>

CONNECTIONPROPERTY

*noch zu definieren_

CONTEXT_INFO

*noch zu definieren_

CURRENT_REQUEST_ID

*noch zu definieren_

CURRENT_TRANSACTION_ID

*noch zu definieren_

DECOMPRESS

*noch zu definieren_

Snowflake verfügt dafür über zwei Funktionen: DECOMPRESS_BINARY und DECOMPRESS_STRING

ERROR_LINE

*noch zu definieren_

<p>SnowScript: Nicht unterstützt in Snowflake mit [SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: Wird der **ERROR\_LINE**-Hilfsfunktion zugeordnet. Die EXEC-Hilfsfunktion erfasst die „Exception line“-Eigenschaft aus der Stapelüberwachung. </p>

ERROR_MESSAGE

SQLERRM

**SSC-FDM-TS0023 hinzugefügt, zurückgegebene Fehlermeldung kann in Snowflake anders sein.

ERROR_NUMBER

*noch zu definieren_

<p>SnowScript: Nicht unterstützt in Snowflake mit [SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p> <p>JavaScript: Wird der **ERROR\_NUMBER**-Hilfsfunktion zugeordnet. Die EXEC-Hilfsfunktion erfasst die „Exception code“-Eigenschaft aus der Stapelüberwachung.</p>

ERROR_PROCEDURE

Mapped

<p>SnowScript: Aktuellen Prozedurnamen verwenden, **SSC-FDM-TS0023** hinzugefügt. Der Ergebniswert basiert auf der gespeicherten Prozedur, in der die Funktion aufgerufen wird, und nicht auf der Stelle, an der die Ausnahme auftritt.</p> <p>JavaScript: Wird der **ERROR\_PROCEDURE**-Hilfsfunktion zugeordnet, übernommen von der `arguments.callee.name`-Prozedur-Eigenschaft </p>

ERROR_SEVERITY

*noch zu definieren_

<p>SnowScript: Nicht unterstützt in Snowflake mit **[SSC-EWI-0040](/migrations/snowconvert-docs/general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md)**.</p>

ERROR_STATE

SQLSTATE

<p>SnowScript: In die **SQLSTATE**-Snowflake-Eigenschaft konvertiert, **SSC-FDM-TS0023 hinzugefügt. Der zurückgegebene Wert kann in Snowflake anders sein.</p> <p>JavaScript: Hilfefunktion erfasst „Exception state“-Eigenschaft </p>

FORMATMESSAGE

FORMATEMESSAGE_UDF

Es wird eine UDF erstellt, um die gleiche Verhaltensweise der Funktion FORMATMESSAGE zu emulieren, allerdings mit einigen Beschränkungen.

GET_FILESTREAM_TRANSACTION_CONTEXT

*noch zu definieren_

GETANSINULL

*noch zu definieren_

HOST_ID

*noch zu definieren_

HOST_NAME

*noch zu definieren_

ISNULL

NVL

ISNUMERIC

*noch zu definieren_

Es gibt keine direkte Entsprechung, aber es kann einer benutzerdefinierten UDF zugeordnet werden, die die gleichen Werte wie in TSQL zurückgibt.

MIN_ACTIVE_ROWVERSION

*noch zu definieren_

NEWID

*noch zu definieren_

​Zuordnung zu UUID_STRING

NEWSEQUENTIALID

*noch zu definieren_

ROWCOUNT_BIG

*noch zu definieren_

SESSION_CONTEXT

*noch zu definieren_

SESSION_ID

*noch zu definieren_

XACT_STATE

*noch zu definieren_

System-statistisch

TransactSql

Snowflake

Anmerkungen

@@CONNECTIONS

*noch zu definieren_

<p>​Snowflake hat eine ähnliche Funktion: <strong>LOGIN_HISTORY.</strong></p><p>Gibt Anmeldeereignisse innerhalb eines angegebenen Zeitbereichs zurück</p>

@@PACK_RECEIVED

*noch zu definieren_

@@CPU_BUSY

*noch zu definieren_

@@PACK_SENT

*noch zu definieren_

@@TIMETICKS

*noch zu definieren_

@@IDLE

*noch zu definieren_

@@TOTAL_ERRORS

*noch zu definieren_

@@IO_BUSY

*noch zu definieren_

@@TOTAL_READ

*noch zu definieren_

@@PACKET_ERRORS

*noch zu definieren_

@@TOTAL_WRITE

*noch zu definieren_

Text und Bild

TransactSQL

Snowflake

Anmerkungen

TEXTPTR

*noch zu definieren_

TEXTVALID

*noch zu definieren_

Trigger

TransactSQL

Snowflake

Anmerkungen

COLUMNS_UPDATED

*noch zu definieren_

EVENTDATA

*noch zu definieren_

TRIGGER_NESTLEVEL

*noch zu definieren_

UPDATE

*noch zu definieren_

Systemfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Systemfunktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an der Erstellung von UDFs in Snowflake.

ISNULL

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Ersetzt NULL durch den angegebenen Ersatzwert. (ISNULL in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
ISNULL ( check_expression , replacement_value )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

NVL( <expr1> , <expr2> )
Copy

Beispiele

SQL Server

SELECT ISNULL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
Copy

Ergebnis:

COMPANYNAME

SNOWFLAKE

Snowflake SQL
SELECT
NVL(NULL, 'SNOWFLAKE') AS COMPANYNAME;
Copy

Ergebnis:

COMPANYNAME

SNOWFLAKE

NEWID

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Erzeugt einen eindeutigen Wert vom Typ „eindeutiger Bezeichner“. (NEWID in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
NEWID ( )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

UUID_STRING()
Copy

Beispiele

Warnung

Die Ausgaben können abweichen, da zur Laufzeit eine eindeutige ID generiert wird

SQL Server

SELECT NEWID ( ) AS ID;
Copy

Ergebnis:

ID

47549DDF-837D-41D2-A59C-A6BC63DF7910

Snowflake SQL
SELECT
UUID_STRING( ) AS ID;
Copy

Ergebnis:

ID

6fd4312a-7925-4ad9-85d8-e039efd82089

NULLIF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen Nullwert zurück, wenn die beiden angegebenen Ausdrücke gleich sind.

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
NULLIF ( check_expression , replacement_value )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

NULLIF( <expr1> , <expr2> )
Copy

Beispiele

SQL Server

SELECT NULLIF(6,9) AS RESULT1, NULLIF(5,5) AS RESULT2;
Copy

Ergebnis:

RESULT1

RESULT2

6

null

Snowflake SQL
SELECT
NULLIF(6,9) AS RESULT1,
NULLIF(5,5) AS RESULT2;
Copy

Ergebnis:

RESULT1

RESULT2

6

null

@@ROWCOUNT

Applies to
  • SQL Server

Beschreibung

Gibt die Anzahl der Zeilen zurück, die von der letzten Anweisung betroffen sind. (@@ROWCOUNT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
@@ROWCOUNT
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

SQLROWCOUNT
Copy

Beispiele

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;
Copy

Ergebnis:

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();
Copy

Ergebnis:

:ADDCOUNT

3

FORMATMESSAGE

Applies to
  • SQL Server

Beschreibung

Konstruiert eine Meldung aus einer vorhandenen Meldung in sys.messages oder aus einer angegebenen Zeichenfolge. (FORMATMESSAGE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Da Snowflake die Funktion FORMATMESSAGE nicht unterstützt, wird die Funktion FORMATMESSAGE_UDF hinzugefügt, um ihre Verhaltensweise zu simulieren.

Syntax

SQL Server

FORMATMESSAGE ( { msg_number  | ' msg_string ' | @msg_variable} , [ param_value [ ,...n ] ] )  
Copy

Beispiele

SQL Server

SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS RESULT;
Copy

Ergebnis:

RESULT

Dies ist die erste Variable und dies die zweite Variable.

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;
Copy

Ergebnis:

RESULT

Dies ist die erste Variable und dies die zweite Variable.

FORMATMESSAGE_UDF

Snowflake verfügt nicht über eine Funktion mit der Funktionalität von FORMATMESSAGE. SnowConvert AI generiert die folgende Python-UDF, um das Verhalten von FORMATMESSAGE zu emulieren.

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,)
$$;
Copy

Diese UDF funktioniert in manchen Fällen nicht korrekt:

  • Die Verwendung des Platzhalters %I64d führt zu einem Fehler.

  • Wenn die Anzahl der Substitutionsargumente nicht mit der Anzahl der Platzhalter übereinstimmt, wird ein Fehler ausgegeben.

  • Einige vorzeichenlose Platzhalter wie %u oder %X verhalten sich bei der Formatierung des Wertes nicht korrekt.

  • Sie kann nicht mit Nachrichten_ids umgehen.

Zeichenfolgenfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Zeichenfolgefunktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an der Erstellung von UDFs in Snowflake.

CHAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt ein Ein-Byte-Zeichen mit der Ganzzahl zurück, die als Parameter in der Tabelle ASCII (CHAR in Transact-SQL) gesendet wurde.

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
CHAR( expression )
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

{CHR | CHAR} ( <input> )
Copy
JavaScript

Vollständige Dokumentation zu JavaScript

String.fromCharCode( expression1, ... , expressionN )
Copy

Beispiele

SQL Server

SELECT CHAR(170) AS SMALLEST_A
Copy

Ausgabe:

SMALLEST_A

ª

Snowflake SQL
SELECT
CHAR(170) AS SMALLEST_A;
Copy

Ergebnis:

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;
Copy

Ergebnis:

SMALLEST_A

ª

CHARINDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den Index des ersten Vorkommens des angegebenen Wertes zurück, der als Parameter gesendet wurde, wenn er übereinstimmt (CHARINDEX in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
CHARINDEX( expression_to_find, expression_to_search [, start] )
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

CHARINDEX( <expr1>, <expr2> [ , <start_pos> ] )
Copy
JavaScript

Vollständige Dokumentation zu JavaScript

String.indexOf( search_value [, index] )
Copy

Beispiele

SQL Server

SELECT CHARINDEX('t', 'Customer') AS MatchPosition;
Copy

Ergebnis:

INDEX

33

Snowflake SQL
SELECT
CHARINDEX('t', 'Customer') AS MatchPosition;
Copy

Ergebnis:

INDEX

33

JavaScript

Bemerkung

Indizes in Transact beginnen bei 1, anstelle von JavaScript, die bei 0 beginnen.

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;
Copy

Ergebnis:

INDEX

33

COALESCE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Wertet die Argumente in der Reihenfolge aus und gibt den aktuellen Wert des ersten Ausdrucks zurück, der anfänglich nicht als NULL ausgewertet wird. Beispiel: SELECT COALESCE(NULL, NULL, ‚third_value‘, ‚fourth_value‘); gibt den dritten Wert zurück, da der dritte Wert der erste Wert ist, der nicht null ist. (COALESCE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
COALESCE ( expression [ ,...n ] )   
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

COALESCE( <expr1> , <expr2> [ , ... , <exprN> ] )
Copy

Beispiele

SQL Server

SELECT TOP 10 StartDate, 
COALESCE(EndDate,'2000-01-01') AS FIRST_NOT_NULL 
FROM HumanResources.EmployeeDepartmentHistory
Copy

Ergebnis:

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;
Copy

Ergebnis:

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

Beschreibung

Erzeugt eine Verkettung von Zeichenfolgenwerten mit anderen. (CONCAT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
CONCAT ( string_value1, string_value2 [, string_valueN ] )  
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

CONCAT( <expr1> [ , <exprN> ... ] )

<expr1> || <expr2> [ || <exprN> ... ]
Copy
JavaScript

Vollständige Dokumentation zu JavaScript

 String.concat( expression1, ..., expressionN )
Copy

Beispiele

SQL Server

SELECT CONCAT('Ray',' ','of',' ','Light') AS TITLE;
Copy

Ausgabe:

TITLE

Ray of Light

Snowflake SQL
SELECT
CONCAT('Ray',' ','of',' ','Light') AS TITLE;
Copy

Ausgabe:

TITLE

Ray of Light

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;
Copy

Ausgabe:

   TITLE|
Copy

————| Ray of Light|

LEFT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den rechten Teil einer Zeichenfolge mit der angegebenen Anzahl von Zeichen zurück. (RIGHT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
LEFT ( character_expression , integer_expression )  
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

LEFT ( <expr> , <length_expr> )
Copy
JavaScript

Funktion zur Emulation des Verhaltens

function LEFT(string, index){
    if(index < 0){
        throw new RangeError('Invalid INDEX on LEFT function');
    }
    return string.slice( 0, index);
  }
return LEFT(STR, INDEX);
Copy

Beispiele

SQL Server

SELECT LEFT('John Smith', 5) AS FIRST_NAME;
Copy

Ausgabe:

FIRST_NAME

John

Snowflake SQL
SELECT LEFT('John Smith', 5) AS FIRST_NAME;
Copy

Ausgabe:

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;
Copy

Ausgabe:

FIRST_NAME

John

LEN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt die Länge einer Zeichenfolge zurück (LEN in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
LEN( string_expression )
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

LENGTH( <expression> )
LEN( <expression> )
Copy
JavaScript

Vollständige Dokumentation zu JavaScript SQL

 string.length
Copy

Beispiele

SQL Server

SELECT LEN('Sample text') AS [LEN];
Copy

Ausgabe:

LEN

11

Snowflake SQL
SELECT LEN('Sample text') AS LEN;
Copy

Ausgabe:

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;
Copy

Ausgabe:

LEN

11

LOWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertiert eine Zeichenfolge in Kleinbuchstaben (LOWER in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
LOWER ( character_expression )  
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

LOWER( <expr> )
Copy
JavaScript

Vollständige Dokumentation zu JavaScript SQL

 String.toLowerCase( )
Copy

Beispiele

SQL Server

SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
Copy

Ausgabe:

LOWERCASE

you are a prediction of the good ones

Snowflake SQL
SELECT LOWER('YOU ARE A PREDICTION OF THE GOOD ONES') AS LOWERCASE;
Copy

Ausgabe:

LOWERCASE

you are a prediction of the good ones

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;
Copy

Ausgabe:

LOWERCASE

you are a prediction of the good ones

NCHAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt das UNICODE Zeichen einer Ganzzahl zurück, die als Parameter gesendet wurde (NCHAR in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

NCHAR( expression )
Copy
Argumente

expression: Ganzzahl-Ausdruck.

Return Type

Zeichenfolgenwert, er hängt von der empfangenen Eingabe ab.

Beispiele

Abfrage

SELECT NCHAR(170);
Copy
Ergebnis

ª

Bemerkung

Die Entsprechung für diese Funktion in JavaScript ist in CHAR dokumentiert.

REPLACE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Ersetzt alle Vorkommen eines angegebenen Zeichenfolgenwertes durch einen anderen Zeichenfolgenwert. (REPLACE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
REPLACE ( string_expression , string_pattern , string_replacement )  
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

REPLACE( <subject> , <pattern> [ , <replacement> ] )
Copy
JavaScript
 String.replace( pattern, new_expression)
Copy

Beispiele

SQL Server

SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
Copy

Ausgabe:

COLUMNNAME           |
---------------------|
Real computer science|
Copy
Snowflake SQL
SELECT REPLACE('Real computer software', 'software','science') AS COLUMNNAME;
Copy

Ausgabe:

COLUMNNAME           |
---------------------|
Real computer science|
Copy
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;
Copy

\ Ausgabe:

COLUMNNAME             |
---------------------|
Real computer science|
Copy

REPLICATE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Wiederholt einen Zeichenfolgenwert eine bestimmte Anzahl von Malen (REPLICATE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
REPLICATE( string_expression, number_expression )
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

REPEAT(<input>, <n>)
Copy
JavaScript

JavaScript-Dokumentation

String.repeat( number_expression )
Copy

Beispiele

SQL Server

SELECT REPLICATE('Staying alive',5) AS RESULT
Copy

Ergebnis:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Copy
Snowflake SQL
SELECT REPEAT('Staying alive',5) AS RESULT;
Copy

Ergebnis:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Copy
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;
Copy

Ergebnis:

RESULT                                                           |
-----------------------------------------------------------------|
Staying aliveStaying aliveStaying aliveStaying aliveStaying alive|
Copy

RTRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen Zeichenausdruck zurück, nachdem das führende Leerzeichen entfernt wurde (RTRIM in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
RTRIM( string_expression )
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

RTRIM(<expr> [, <characters> ])
Copy
JavaScript

Benutzerdefinierte Funktion, um die Verhaltensweise zu emulieren

 function RTRIM(string){
    return string.replace(/s+$/,"");
}
Copy

Beispiele

SQL Server

Eingabe:

SELECT RTRIM('LAST TWO BLANK SPACES  ') AS [RTRIM]
Copy

Ausgabe:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
Copy
Snowflake SQL
SELECT RTRIM('LAST TWO BLANK SPACES  ') AS RTRIM;
Copy

Ergebnis:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
Copy
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;
Copy

Ergebnis:

RTRIM                |
---------------------|
LAST TWO BLANK SPACES|
Copy

SPACE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt die Anzahl der Vorkommen von Leerzeichen zurück (SPACE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SPACE ( integer_expression )  
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

SPACE(<n>)
Copy
JavaScript

Benutzerdefinierte Funktion, um die Verhaltensweise zu emulieren

 function SPACE( occurrences ){
    return ' '.repeat( occurrences );
}
Copy

Beispiele

SQL Server

Eingabe:

SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
Copy

Ausgabe:

RESULT       |
-------------|
SOME     TEXT|
Copy
Snowflake SQL

Eingabe:

SELECT CONCAT('SOME', SPACE(5), 'TEXT') AS RESULT;
Copy

Ausgabe:

RESULT       |
-------------|
SOME     TEXT|
Copy
JavaScript

Eingabe:

 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;
Copy

Ausgabe:

RESULT       |
-------------|
SOME     TEXT|
Copy

SUBSTRING

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen Zeichenausdruck zurück, nachdem das führende Leerzeichen entfernt wurde (RTRIM in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SUBSTRING( string_expression, start, length )
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

SUBSTR( <base_expr>, <start_expr> [ , <length_expr> ] )

SUBSTRING( <base_expr>, <start_expr> [ , <length_expr> ] )
Copy
JavaScript

Benutzerdefinierte Funktion, um die Verhaltensweise zu emulieren

 string.substring( indexA [, indexB])
Copy

Beispiele

SQL Server

Eingabe:

SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;  
Copy

Ausgabe:

SOMETEXT|
--------|
bcd     |
Copy
Snowflake SQL
SELECT SUBSTRING('abcdef', 2, 3) AS SOMETEXT;  
Copy

Ergebnis:

SOMETEXT|
--------|
bcd     |
Copy
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;
Copy

Ergebnis:

SOMETEXT|
--------|
bcd     |
Copy

UPPER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertiert eine Zeichenfolge in Großbuchstaben (UPPER in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
UPPER( string_expression ) 
Copy
Snowflake SQL

Vollständige Dokumentation zu Snowflake-SQL

UPPER( <expr> )
Copy
JavaScript

Vollständige Dokumentation zu JavaScript SQL

 String.toUpperCase( )
Copy

Beispiele

SQL Server

SELECT UPPER('you are a prediction of the good ones') AS [UPPER]
Copy

Ausgabe:

+-------------------------------------|
|UPPER                                |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
Copy
Snowflake SQL
SELECT
UPPER('you are a prediction of the good ones') AS UPPER;
Copy

Ausgabe:

+-------------------------------------|
|UPPER                                |
+-------------------------------------|
|YOU ARE A PREDICTION OF THE GOOD ONES|
+-------------------------------------|
Copy
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;
Copy

\ Ausgabe:

UPPER                                |
-------------------------------------|
YOU ARE A PREDICTION OF THE GOOD ONES|
Copy

ASCII

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den Zahlencode eines Zeichens aus der Tabelle ASCII zurück (ASCII in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

ASCII( expression )
Copy

Argumente

Ausdruck: VARCVHAR oder CHAR Ausdruck.

Return Type

INT.

Beispiele

Abfrage

SELECT ASCII('A') AS A , ASCII('a') AS a;
Copy

Ergebnis

          A|          a|
-----------| ----------|
         65|         97|
Copy

ASCII in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt den Zahlencode eines Zeichens aus der Tabelle ASCII zurück (Dokumentation zur JavaScript-Funktion charCodeAt).

Beispielhaftes Quellcode-Muster

Syntax

 string.charCodeAt( [index] )
Copy
Argumente

index(Optional): Index der Zeichenfolge, um das Zeichen zu erhalten und seine Codenummer in der Tabelle ASCII zurückzugeben. Wenn dieser Parameter nicht angegeben wird, ist die Voreinstellung 0. \

Return Type

Int.

Beispiele

Abfrage

 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;
Copy
Ergebnis
          A|          a|
-----------| ----------|
         65|         97|    
Copy

QUOTENAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt eine durch Anführungszeichen begrenzte Zeichenfolge zurück (QUOTENAME in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

QUOTENAME( string_expression [, quote_character])
Copy

Argumente

string_expression: Zeichenfolge zur Abgrenzung.

quote_character: ein Zeichen zur Abgrenzung der Zeichenfolge.

Return Type

NVARCHAR(258). Null, wenn sich das Anführungszeichen von (‚), ([]), („), ( () ), ( >< ), ({}) oder (`) unterscheidet.

Beispiele

Abfrage

SELECT QUOTENAME('Hello', '`') AS HELLO;
Copy

Ergebnis

    HELLO|      
---------|
  `Hello`|  
Copy

QUOTENAME in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider ist diese Funktion in JavaScript nicht verfügbar, aber sie kann mit Hilfe von vordefinierten Funktionen implementiert werden.

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function QUOTENAME(string, quote){
    return quote.concat(string, quote);
}
Copy
Argumente

string: Zeichenfolgenausdruck zur Abgrenzung.

quote: Anführungszeichen, die als Trennzeichen verwendet werden.

Return Type

Zeichenfolge

Beispiele

Abfrage

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;
Copy
Ergebnis
    HELLO|      
---------|
  `Hello`| 
Copy

CONCAT_WS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Erzeugt eine Verkettung von Zeichenfolgenwerten mit anderen, wobei ein Trennzeichen zwischen ihnen verwendet wird (CONCAT_WS in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

CONCAT_WS( separator, expression1, ... ,expressionN )
Copy

Argumente

separator: Trennzeichen zur Verknüpfung.

expression1, ... ,expressionN: Der zu suchende Ausdruck wird in eine Zeichenfolge umgewandelt.

Return Type

Zeichenfolgenwert, abhängig von der empfangenen Eingabe.

Beispiele

Abfrage

SELECT CONCAT_WS(' ', 'Mariah','Carey') AS NAME;
Copy

Ergebnis

        NAME|      
------------|
Mariah Carey|
Copy

Verknüpfung in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Verkettet die Zeichenfolgenargumente mit der aufrufenden Zeichenfolge unter Verwendung eines Trennzeichens (Dokumentation zur JavaScript-Funktion Join).

Beispielhaftes Quellcode-Muster

Syntax

 Array.join( separator )
Copy
Argumente

separator: Zeichen zumr Verknüpfung.

Return Type

String.

Beispiele

Abfrage

 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;
Copy
Ergebnis
        NAME|      
------------|
Mariah Carey|   
Copy

SOUNDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen vierstelligen Code zur Bewertung der Ähnlichkeit zweier Zeichenfolgen zurück (SOUNDEX in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SOUNDEX( string_expression )
Copy

Argumente

string_expression: Zeichenfolgenausdruck zum Umkehren.

Return Type

Derselbe Datentyp des als Parameter gesendeten Zeichenfolgenausdrucks.

Beispiele

Abfrage

SELECT SOUNDEX('two') AS TWO , SOUNDEX('too') AS TOO;
Copy

Ergebnis

      TWO|      TOO|
---------|---------|
     T000|     T000|
Copy

SOUNDEX in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider stellt JavaScript keine Methode zur Verfügung, die den SOUNDEX-Algorithmus ausführt, aber er kann manuell implementiert werden.

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 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));
      
  }
Copy
Argumente

word: Zeichenfolgenausdruck, um seine SOUNDEX Entsprechung zu erhalten.

Return Type

Zeichenfolge

Beispiele

Abfrage

 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;
Copy
Ergebnis
      TWO|      TOO|
---------|---------|
     T000|     T000| 
Copy

REVERSE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Kehrt eine Zeichenfolge um (REVERSE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

REVERSE( string_expression )
Copy

Argumente

string_expression: Zeichenfolgenausdruck zum Umkehren.

Return Type

Derselbe Datentyp des als Parameter gesendeten Zeichenfolgenausdrucks.

Beispiele

Abfrage

SELECT REVERSE('rotator') AS PALINDROME;
Copy

Ergebnis

      PALINDROME|      
----------------|
         rotator|  
Copy

Umkehrung in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider ist diese Funktion in JavaScript nicht verfügbar, aber sie kann mit Hilfe von vordefinierten Funktionen implementiert werden.

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function REVERSE(string){
    return string.split("").reverse().join("");
}
Copy
Argumente

string: Umzukehrender Zeichenfolgenausdruck.

Return Type

Zeichenfolge

Beispiele

Abfrage

 CREATE OR REPLACE FUNCTION REVERSE(str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return STR.split("").reverse().join("");
$$;

SELECT REVERSE('rotator') PALINDROME;
Copy
Ergebnis
      PALINDROME|      
----------------|
         rotator|  
Copy

STRING_ESCAPE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Escape-Sonderzeichen in Texten und gibt den Text mit den Escape-Zeichen zurück. (STRING\ESCAPE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

STRING_ESCAPE( text, type )
Copy

Argumente

text: Text zum Ausblenden von Escape-Zeichen.

type: Format-Typ für Escape-Zeichen. Derzeit wird nur das Format JSON unterstützt.

Return Type

VARCHAR.

Beispiele

Abfrage

SELECT STRING_ESCAPE('\   /  \\    "     ', 'json') AS [ESCAPE];  
Copy

Ergebnis

ESCAPE|
--------------------------|
  \\   \/  \\\\    \"     |
Copy

Stringify in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertiert ein Objekt in ein JSON Zeichenfolgenformat (Dokumentation zur JavaScript-Funktion Stringify).

Beispielhaftes Quellcode-Muster

Syntax

 JSON.stringify( value )
Copy
Argumente

value: Zu konvertierender Objektausdruck.

Return Type

Zeichenfolge

Beispiele

Abfrage

 CREATE OR REPLACE FUNCTION string_escape (str varchar)
  RETURNS string
  LANGUAGE JAVASCRIPT
AS
$$
   return JSON.stringify( STR );
$$;

SELECT STRING_ESCAPE('\   /  \\    "     ') ESCAPE;
Copy
Ergebnis
                    ESCAPE|
--------------------------|
  \\   \/  \\\\    \"     | 
Copy

TRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen Zeichenausdruck ohne Leerzeichen zurück (TRIM in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

TRIM( string_expression )
Copy

Argumente

string_expression: Zu konvertierende Zeichenfolgenausdrücke.

Return Type

VARCHAR oder NVARCHAR

Beispiele

SQL Server

SELECT TRIM('  FIRST AND LAST TWO BLANK SPACES  ') AS [TRIM];
Copy

Ausgabe:

+-------------------------------|
|TRIM                           |
+-------------------------------|
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------|
Copy

Snowflake SQL

SELECT TRIM('  FIRST AND LAST TWO BLANK SPACES  ') AS TRIM;
Copy

Ausgabe:

+-------------------------------|
|TRIM                           |
+-------------------------------|
|FIRST AND LAST TWO BLANK SPACES|
+-------------------------------|
Copy

Trim in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Ersetzt die Vorkommen eines Musters durch ein neues, das als Parameter übergeben wird (Dokumentation zur JavaScript-Funktion Replace).

Beispielhaftes Quellcode-Muster

Syntax

 String.trim( )
Copy
Argumente

Diese Funktion erhält keine Parameter.

Return Type

Zeichenfolge

Beispiele

Abfrage

 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
Copy
Ergebnis
                           TRIM|      
-------------------------------|
FIRST AND LAST TWO BLANK SPACES|   
Copy

DIFFERENCE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt eine ganze Zahl zurück, die den Unterschied zwischen zwei Zeichenfolgen unter Verwendung des SOUNDEX-Algorithmus misst (DIFFERENCE in Transact-SQL). \ Es zählt die gemeinsamen Zeichen der Zeichenfolgen, die sich aus der Ausführung des SOUNDEX-Algorithmus ergeben.

Beispielhaftes Quellcode-Muster

Syntax

DIFFERENCE( expression1, expression1 )
Copy

Argumente

expression1, expression2: Zeichenfolgenausdrücke, die verglichen werden sollen.

Return Type

Int.

Beispiele

Abfrage

SELECT DIFFERENCE('Like', 'Mike');
Copy

Ergebnis

    Output |
-----------|
         3 |
Copy

DIFFERENCE in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider ist diese Funktion in JS nicht verfügbar, aber sie kann leicht implementiert werden.

Bemerkung

Diese Funktion erfordert die Implementierung des SOUNDEX-Algorithmus.

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function DIFFERENCE(strA, strB) {
    var count = 0;
    for (var i = 0; i < strA.length; i++){
       if ( strA[i] == strB[i] ) count++; 
    }
    
    return count;
}
Copy
Argumente

strA, strB: Zeichenfolgenausdrücke, die durch die Ausführung des SOUNDEX-Algorithmus entstehen.

Return Type

String.

Beispiele

Abfrage

 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;
Copy
Ergebnis
   DIFFERENCE|
-------------|
            4| 
Copy

FORMAT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen Wert zurück, der mit dem angegebenen Format und der optionalen Kultur formatiert ist (FORMAT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

FORMAT( value, format [, culture])
Copy

Argumente

value: Zeichenfolgenausdrücke, die das Format angeben.

format: Gewünschtes Format.

culture (Optional): NVarchar Argument zur Angabe der Kultur. Wenn es nicht angegeben wird, werden die Sprachen der aktuellen Sitzung verwendet.

Return Type

NULL wenn der Culture-Parameter ungültig ist, andernfalls folgt er den nächsten Datentypen:

Kategorie

.NET Typ

Numerisch

bigint

Int64

Numerisch

int

Int32

Numerisch

smallint

Int16

Numerisch

tinyint

Byte

Numerisch

decimal

SqlDecimal

Numerisch

numeric

SqlDecimal

Numerisch

float

Double

Numerisch

real

Single

Numerisch

smallmoney

Dezimalzahl

Numerisch

money

Dezimalzahl

Datum und Uhrzeit

date

DateTime

Datum und Uhrzeit

time

TimeSpan

Datum und Uhrzeit

datetime

DateTime

Datum und Uhrzeit

smalldatetime

DateTime

Datum und Uhrzeit

datetime2

DateTime

Datum und Uhrzeit

datetimeoffset

DateTimeOffset

Beispiele

Abfrage

SELECT FORMAT(CAST('2022-01-24' AS DATE), 'd', 'en-gb')  AS 'Great Britain';
Copy

Ergebnis

  GREAT BRITAIN|
---------------|
     24/01/2022|  
Copy
Abfrage
SELECT FORMAT(244900.25, 'C', 'cr-CR')  AS 'CURRENCY';
Copy
Ergebnis

CURRENCY

₡244.900,25

FORMAT in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Es gibt verschiedene Funktionen zum Formatieren von Datums- und Ganzzahlwerten in JavaScript. Leider sind diese Funktionalitäten nicht in einer Methode integriert.

DateTime-Werte

Syntax

 Intl.DateTimeFormat( format ).format( value )
Copy
Argumente

locales (Optional): Zeichenfolgenausdruck des anzuwendenden Formats.

options (Optional): Objekt mit verschiedenen unterstützten Eigenschaften für Formate von numerischen Ausdrücken (Dokumentation zur JavaScript-Funktion NumberFormat).

value: Numerischer Ausdruck zum Formatieren.

Return Type

String.

Numerische Werte

Syntax

 Intl.NumberFormat( [locales [, options]] ).format( value )
Copy
Argumente

locales (Optional): Zeichenfolgenausdruck des anzuwendenden Formats.

options (Optional): Objekt mit verschiedenen unterstützten Eigenschaften für Formate von numerischen Ausdrücken (Dokumentation zur JavaScript-Funktion NumberFormat).

value: Numerischer Ausdruck zum Formatieren.

Return Type

String.

Beispiele

DateTime

Abfrage
 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;
Copy
Ergebnis
  GREAT_BRITAIN|      
---------------|
     24/01/2022|  
Copy

Numerisch

Abfrage
 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;
Copy
Ergebnis
       CURRENCY|      
---------------|
 244.900,25 CRC|  
Copy

PATINDEX

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt die Anfangsposition des ersten Vorkommens eines Musters in einem angegebenen Ausdruck zurück (PATINDEX in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

PATINDEX( pattern, expression )
Copy

Argumente

pattern: Muster zum Finden.

expression: Ausdruck für die Suche.

Return Type

Ganzzahl. Gibt 0 zurück, wenn das Muster nicht gefunden wird.

Beispiele

Abfrage

SELECT PATINDEX( '%on%', 'No, no, non esistono più') AS [PATINDEX]
Copy

Ergebnis

    PATINDEX|      
------------|
          10|  
Copy

Search in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Findet den Index eines Musters mit REGEX (Dokumentation zurJavaScript-Suchfunktion).

Beispielhaftes Quellcode-Muster

Syntax

 String.search( regex )
Copy
Argumente

regex: Regulärer Ausdruck, der mit dem gewünschten Muster übereinstimmt.

Return Type

Ganzzahl. Wenn das Muster mit keinem Teil der Zeichenfolge übereinstimmt, wird -1 zurückgegeben.

Beispiele

Abfrage

 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;
Copy
Ergebnis
    PATINDEX|      
------------|
          10|  
Copy

STR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt Zeichendaten zurück, die aus numerischen Daten konvertiert wurden. Die Zeichendaten sind rechtsbündig, mit einer bestimmten Länge und Dezimalgenauigkeit. (STR in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server

STR ( float_expression [ , length [ , decimal ] ] ) 
Copy
Snowflake SQL
STR_UDF( numeric_expression, number_format )
Copy

Argumente

numeric_expression: Float-Ausdruck mit einem Dezimalpunkt.

length (Optional): Länge des zurückgegebenen Ausdrucks, einschließlich Punktschreibweise, Dezimal- und Fließkommateil.

decimal(Optional): Ist die Anzahl der Stellen rechts vom Dezimalpunkt.

Return Type

VARCHAR.

Beispiele

SQL Server

Eingabe:

/* 1 */
SELECT STR(123.5);

/* 2 */
SELECT STR(123.5, 2);

/* 3 */
SELECT STR(123.45, 6);

/* 4 */
SELECT STR(123.45, 6, 1);
Copy

Ausgabe:

1) 124
2) **
3) 123
4) 123.5
Copy

Snowflake SQL

Eingabe:

/* 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');
Copy

Ausgabe:

1) 124

2) ##

3) 123
4) 123.5
Copy

STR in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider ist diese Funktionalität in JS nicht verfügbar, aber sie kann mit den vordefinierten Funktionen für Zeichenfolgen leicht implementiert werden.

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 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);
}
Copy
Argumente

number: Float-Ausdruck mit einem Dezimalpunkt.

max_length: Länge, die der zurückgegebene Ausdruck haben darf, einschließlich Punkt-, Dezimal- und Fließkommateile.

float_precision: Ist die Anzahl der Stellen rechts vom Dezimalpunkt.

Return Type

Zeichenfolge

Beispiele

Abfrage

 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);
Copy
Ergebnis
           STR|
--------------|
  12345.674000| 
Copy

LTRIM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen Zeichenausdruck zurück, nachdem das führende Leerzeichen entfernt wurde (LTRIM in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

LTRIM( string_expression )
Copy

Argumente

string_expression: Zu konvertierende Zeichenfolgenausdrücke.

Return Type

VARCHAR oder NVARCHAR

Beispiele

Abfrage

SELECT LTRIM('  FIRST TWO BLANK SPACES') AS [LTRIM]
Copy

Ergebnis

                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  
Copy

LTRIM in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider ist diese Funktion in JavaScript nicht verfügbar, aber sie kann mit regulären Ausdrücken implementiert werden.

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function LTRIM(string){
    return string.replace(/^s+/,"");
}
Copy
Argumente

string: Zeichenfolgenausdruck, um Leerzeichen zu entfernen.

Return Type

Zeichenfolge

Beispiele

Abfrage

 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;
Copy
Ergebnis
                 LTRIM|      
----------------------|
FIRST TWO BLANK SPACES|  
Copy

Ranking-Funktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Ranking-Funktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an ihrer Verwendung in gespeicherten Prozeduren in SnowFlake.

DENSE_RANK

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese Funktion gibt den Rang jeder Zeile innerhalb einer Resultset-Partition zurück, ohne Lücken in den Rangwerten. Der Rang einer bestimmten Zeile ist eins plus die Anzahl der eindeutigen Rangwerte, die vor dieser bestimmten Zeile stehen. (DENSE_RANK in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
 DENSE_RANK ( ) OVER ( [ <partition_by_clause> ] < order_by_clause > )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

 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 > )
Copy

Beispiele

SQL Server

SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
Copy

Ergebnis:

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|
Copy
Snowflake SQL
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

Ergebnis:

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|
Copy

Zugehörige EWIs

  • [SSC-EWI-0001](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0001): Unerkanntes Token in der Zeile des Quellcodes.

RANK

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den Rang jeder Zeile innerhalb der Partition eines Resultset zurück. Der Rang einer Zeile ist eins plus die Anzahl der Ränge, die vor der betreffenden Zeile liegen. (RANK in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

 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 )
Copy

Beispiele

SQL Server

SELECT TOP 10 BUSINESSENTITYID, NATIONALIDNUMBER, RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK FROM HUMANRESOURCES.EMPLOYEE AS TOTAL
Copy

Ergebnis:

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|
Copy
Snowflake SQL
SELECT TOP 10
BUSINESSENTITYID,
NATIONALIDNUMBER,
RANK() OVER (ORDER BY NATIONALIDNUMBER) AS RANK
FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

Ergebnis:

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|
Copy

Zugehörige EWIs

  • [SSC-EWI-0001](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0001): Unerkanntes Token in der Zeile des Quellcodes.

ROW_NUMBER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Nummeriert die Ausgabe eines Resultsets. Genauer gesagt, gibt sie die fortlaufende Nummer einer Zeile innerhalb einer Partition eines Resultsets zurück, beginnend bei 1 für die erste Zeile in jeder Partition. (ROW\NUMBER in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
 ROW_NUMBER ( )   
    OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )  
Copy
Snowflake SQL

Vollständige Dokumentation zu 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 )
Copy

Beispiele

SQL Server

SELECT 
ROW_NUMBER() OVER(ORDER BY NAME  ASC) AS RowNumber, 
NAME
FROM HUMANRESOURCES.DEPARTMENT
Copy

Ausgabe:

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               |
Copy
Snowflake SQL
SELECT
ROW_NUMBER() OVER(ORDER BY NAME ASC) AS RowNumber,
NAME
FROM
HUMANRESOURCES.DEPARTMENT;
Copy

Ausgabe:

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               |
Copy

Zugehörige EWIs

  • [SSC-EWI-0001](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0001): Unerkanntes Token in der Zeile des Quellcodes.

Logische Funktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von logischen Funktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an ihrer Verwendung in gespeicherten Prozeduren in SnowFlake.

IIF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen von zwei Werten zurück, je nachdem, ob der boolesche Ausdruck als „true“ oder „false“ ausgewertet wird. (IIF in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
IIF( boolean_expression, true_value, false_value )
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

IFF( <condition> , <expr1> , <expr2> )
Copy

Beispiele

SQL Server

SELECT IIF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT
Copy

Ergebnis:

RESULT|
------|
 FALSE|
Copy
Snowflake SQL
SELECT
IFF( 2 > 3, 'TRUE', 'FALSE' ) AS RESULT;
Copy

Ergebnis:

RESULT|
------|
 FALSE|
Copy

XML-Funktionen

Dieser Abschnitt beschreibt die Übersetzung von XML-Funktionen in Transact-SQL zu Snowflake SQL.

Abfrage

Applies to
  • SQL Server

Warnung

Diese Transformation wird in der Zukunft stattfinden

Beschreibung

Gibt eine XQuery gegenüber einer Instanz des Datentyps xml an. Das Ergebnis ist vom Typ xml. Die Methode gibt eine Instanz von untypisiertem XML zurück. (Abfrage() in Transact-SQL)

Beispielhafte Quellcode-Muster

Das folgende Beispiel zeigt die Transformation für .query( )

SQL Server

Eingabe
 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;
Copy
Ausgabe
 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>  |
Copy
Snowflake SQL
Eingabe
 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;
Copy
Ausgabe
 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>  |
Copy

Bekannte Probleme

Es wurden keine Probleme gefunden.

Zugehörige EWIs

  1. [SSC-EWI-0036](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0036): Datentyp in einen anderen Datentyp konvertiert.

Wert

Applies to
  • SQL Server

Warnung

Diese Transformation wird in der Zukunft stattfinden

Beschreibung

Führt eine XQuery gegen die XML durch und gibt einen Wert vom Typ SQL zurück. Diese Methode gibt einen skalaren Wert zurück. (value() in Transact-SQL).

Beispielhafte Quellcode-Muster

Das folgende Beispiel beschreibt die Transformation für .value( )

SQL Server

Eingabe
 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;
Copy
Ausgabe
 ID | ProductName | Warranty               |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy
Snowflake SQL
Eingabe
 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;
Copy
Ausgabe
 ID | PRODUCTNAME | WARRANRTY              |
----|-------------|------------------------|
1   | Road Bike   | 1 year parts and labor |
2   | Skate       | 1 year parts and labor |
Copy

Bekannte Probleme

Es wurden keine Probleme gefunden.

Zugehörige EWIs

  1. [SSC-EWI-0036](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0036): Datentyp in einen anderen Datentyp konvertiert.

Aggregatfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Aggregatfunktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an der Erstellung von UDFs in Snowflake.

COUNT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese Funktion gibt die Anzahl der gefundenen Artikel in einer Gruppe zurück. COUNT funktioniert wie die Funktion COUNT_BIG. Diese Funktionen unterscheiden sich nur durch die Datentypen ihrer Rückgabewerte. COUNT gibt immer einen Wert vom Datentyp „int“ zurück. COUNT_BIG gibt immer einen Wert vom Datentyp „bigint“ zurück. (COUNT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Copy

Beispiele

SQL Server

SELECT COUNT(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

Ergebnis:

TOTAL

290

Snowflake SQL
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

Ergebnis:

TOTAL

290

COUNT_BIG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese Funktion gibt die Anzahl der gefundenen Artikel in einer Gruppe zurück. COUNT_BIG funktioniert wie die Funktion COUNT. Diese Funktionen unterscheiden sich nur durch die Datentypen ihrer Rückgabewerte. COUNT_BIG gibt immer einen Wert vom Datentyp „bigint“ zurück. COUNT gibt immer einen Wert vom Datentyp „int“ zurück. (COUNT_BIG in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Copy

Beispiele

SQL Server

SELECT COUNT_BIG(NATIONALIDNUMBER) FROM HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

Ergebnis:

TOTAL

290

Snowflake SQL
SELECT
COUNT(NATIONALIDNUMBER) FROM
HUMANRESOURCES.EMPLOYEE AS TOTAL;
Copy

Ergebnis:

TOTAL

290

SUM

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Gibt die Summe aller Werte oder nur die Werte von DISTINCT in dem Ausdruck zurück. SUM kann nur mit numerischen Spalten verwendet werden. Nullwerte werden ignoriert. (SUM in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SUM ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

SUM( [ DISTINCT ] <expr1> )
Copy

Beispiele

SQL Server

SELECT SUM(VACATIONHOURS) FROM HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
Copy

Ergebnis:

TOTALVACATIONHOURS

14678

Snowflake SQL
SELECT
SUM(VACATIONHOURS) FROM
HUMANRESOURCES.EMPLOYEE AS TOTALVACATIONHOURS;
Copy

Ergebnis:

TOTALVACATIONHOURS

14678

Kundenspezifische SnowConvert AI-UDFs

Beschreibung

Einige Transact-SQL-Funktionen oder -Verhalten sind möglicherweise nicht verfügbar oder verhalten sich in Snowflake anders. Um diese Unterschiede zu minimieren, werden einige Funktionen durch kundenspezifische SnowConvert AI-UDFs ersetzt.

Diese UDFs werden während der Migration automatisch erstellt, und zwar im Ordner UDF-Hilfsfunktion, innerhalb des Ordners Ausgabe. Es gibt eine Datei pro benutzerdefinierter UDF.

OPENXML UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Diese benutzerdefinierte UDF wird hinzugefügt, um eine Rowset-Ansicht über ein XML Dokument zu verarbeiten. Dies würde für Deklarationen in verwendet werden, da es als Rowset-Anbieter funktioniert.

Optionale Parameter und verschiedene Knotentypen werden in dieser Version von UDF nicht unterstützt. Der Elementknoten wird standardmäßig verarbeitet.

Benutzerdefinierte UDF-Überlastungen

Parameter

  1. XML: Ein VARCHAR, der den lesbaren Inhalt der XML darstellt.

  2. PATH: Ein Varchar, der das Muster der Knoten enthält, die als Zeilen verarbeitet werden sollen.

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);
$$;
Copy
Transact-SQL
Abfrage
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)); 
Copy
Ergebnis
CustomerID  | ContactName
----------------------------|
VINET     | Paul Henriot
LILAS     | Carlos Gonzlez
Copy
Snowflake

Bemerkung

Das folgende Beispiel ist in einer gespeicherten Prozedur isoliert, da Umgebungsvariablen nur 256 Byte Speicherplatz unterstützen und der XML-Demo-Code mehr als diese Grenze verwendet.

Abfrage
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;
Copy
Ergebnis

CustomerID

ContactName

VINET

Paul Henriot

LILAS

Carlos Gonzlez

Abfrage
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'));
Copy
Ergebnis

CustomerID

ContactName

VINET

Paul Henriot

Bekannte Probleme

Es wurden keine Probleme gefunden.

Zugehörige EWIs

  1. [SSC-EWI-TS0075](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/sqlServerEWI. md#ssc-ewi-ts0075): Integrierte Prozedur wird nicht unterstützt.

STR UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese benutzerdefinierte UDF wandelt numerische Daten in Zeichendaten um.

Benutzerdefinierte UDF-Überlastungen

Parameter

  1. FLOAT_EXPR: Ein numerischer Ausdruck, der in Varchar konvertiert werden soll.

  2. FORMAT: Ein Varchar-Ausdruck mit der Länge und der Anzahl der Dezimalstellen des resultierenden Varchar-Wertes. Dieses Format wird automatisch in SnowConvert generiert.

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')
$$;
Copy
Transact-SQL
Abfrage
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;
Copy
Ergebnis

A

B

C

D

124

**

123

123,5

Snowflake
Abfrage
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;
Copy

SWITCHOFFSET_UDF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese benutzerdefinierte UDF wird hinzugefügt, um einen datetimeoffset-Wert zurückzugeben, der von dem gespeicherten Zeitzonenoffset auf einen angegebenen neuen Zeitzonenoffset geändert wird.

Benutzerdefinierte UDF-Überlastungen

Parameter

  1. source\_timestamp: Ein TIMESTAMP_TZ, der in einen datetimeoffset(n)-Wert aufgelöst werden kann.

  2. target_tz: Ein Varchar, der den Zeitzonenoffset darstellt

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
$$;
Copy
Transact-SQL
Abfrage
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;  
Copy
Ergebnis
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;  
Copy
Snowflake
Abfrage
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;
Copy
Ergebnis

fr_time

cr_time

1998-09-20 7:45:50.71345 +02:00

1998-09-19 23:45:50.7134500 -06:00

Metadatenfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Metadatenfunktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an ihrer Verwendung in gespeicherten Prozeduren in SnowFlake.

DB_NAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt den Namen einer angegebenen Datenbank zurück. (DB_NAME in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
 DB_NAME ( [ database_id ] )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

 CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/
Copy

Beispiele

SQL Server

SELECT DB_NAME();
Copy

Ergebnis:

RESULT

ADVENTUREWORKS2019

Snowflake SQL
SELECT
CURRENT_DATABASE() /*** SSC-FDM-TS0010 - CURRENT_DATABASE function has different behavior in certain cases ***/;
Copy

Ergebnis:

RESULT

ADVENTUREWORKS2019

Bekannte Probleme

1. Die CURRENT\DATABASE-Funktion verhält sich in bestimmten Fällen anders

Die DB_NAME-Funktion kann mit dem Parameter database_id aufgerufen werden, der den Namen der angegebenen Datenbank zurückgibt. Ohne Parameter gibt die Funktion den aktuellen Datenbanknamen zurück. SnowFlake unterstützt diesen Parameter jedoch nicht und die Funktion CURRENT_DATABASE gibt immer den aktuellen Datenbanknamen zurück.

Zugehörige EWIs

  1. [SSC-FDM-TS0010](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0010): CURRENT_DATABASE-Funktion verhält sich in bestimmten Fällen anders.

OBJECT_ID

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt die Datenbankobjekt-Identifikationsnummer eines Objekts zurück, das in einem Schema enthalten ist.(OBJECT_ID in Transact-SQL).

SQL Server-Syntax

 OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]   
  object_name' [ ,'object_type' ] )
Copy

Beispielhafte Quellcode-Muster

1. Default transformation

SQL Server
 IF OBJECT_ID_UDF('DATABASE2.DBO.TABLE1') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
Copy
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;
Copy

2. Unknown database

SQL Server
 IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
Copy
Snowflake SQL
  IF (
 OBJECT_ID_UDF('DATABASE1.DBO.TABLE1') is not null) THEN
     DROP TABLE IF EXISTS TABLE1;
 END IF;
Copy

3. Different object names

SQL Server
 IF OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
            DROP TABLE IF EXISTS TABLE1;
        END IF;
Copy
Snowflake SQL
  IF (
 OBJECT_ID_UDF('DATABASE1.DBO.TABLE2') is not null) THEN
     DROP TABLE IF EXISTS TABLE1;
 END IF;
Copy

Bekannte Probleme

1. Die OBJECT_ID\_UDF-Funktion hat in bestimmten Fällen ein anderes Verhalten

OBJECT_ID gibt die Objektidentifikationsnummer zurück, aber OBJECT_ID\_UDF gibt einen booleschen Wert zurück, so dass sie nur dann gleichwertig sind, wenn OBJECT\_ID mit der Bedingung not null verwendet wird.

Zugehörige EWIs

  • [SSC-EWI-0001](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0001): Unerkanntes Token in der Zeile des Quellcodes.

  • [SSC-FDM-0007](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM. md#ssc-fdm-0007): Element mit fehlenden Abhängigkeiten

Analysefunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Analysefunktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an der Erstellung von UDFs in Snowflake.

LAG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Greift auf Daten aus einer früheren Zeile desselben Resultsets zu, ohne dass eine Selbstverknüpfung verwendet werden muss, die mit SQL Server 2012 (11.x) beginnt. LAG ermöglicht den Zugriff auf eine Zeile mit einem bestimmten physischen Offset, der vor der aktuellen Zeile liegt. Verwenden Sie diese Analysefunktion in einer SELECT-Anweisung zum Vergleichen von Werten in der aktuellen Zeile mit Werten in einer vorherigen Zeile. (COUNT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
LAG (scalar_expression [,offset] [,default])  
    OVER ( [ partition_by_clause ] order_by_clause )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

COUNT( [ DISTINCT ] <expr1> [ , <expr2> ... ] )
Copy

Beispiele

SQL Server

SELECT TOP 10 
LAG(E.VacationHours,1) OVER(ORDER BY E.NationalIdNumber) as PREVIOUS,
E.VacationHours AS ACTUAL 
FROM HumanResources.Employee E
Copy

Ergebnis:

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;
Copy

Ergebnis:

PREVIOUS

ACTUAL

NULL

10

10

89

89

10

10

48

48

0

0

95

95

55

55

67

67

84

84

85

Datentypfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Datentypfunktionen in Transact-SQL zu Snowflake SQL und JavaScript Code.

DATALENGTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt die Anzahl der Bytes zurück, die zur Darstellung eines beliebigen Ausdrucks verwendet werden. (DATALENGTH in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DATALENGTH ( expression )   
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

OCTET_LENGTH(<string_or_binary>)
Copy

Beispiele

SQL Server

SELECT DATALENGTH('SomeString') AS SIZE;
Copy

Ergebnis:

SIZE

10

Snowflake SQL
SELECT OCTET_LENGTH('SomeString') AS SIZE;
Copy

Ergebnis:

SIZE

10

Mathematische Funktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von mathematischen Funktionen in Transact-SQL zu Snowflake SQL und JavaScript Code, orientiert an ihrer Verwendung in gespeicherten Prozeduren in SnowFlake.

ABS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Eine mathematische Funktion, die den absoluten (positiven) Wert des angegebenen numerischen Ausdrucks zurückgibt. (ABS wandelt negative Werte in positive Werte um. ABS hat keine Auswirkungen auf Null- oder positive Werte.) (ABS in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
ABS( expression )
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

ABS( <num_expr> )
Copy
JavaScript

Vollständige Dokumentation zu JavaScript

Math.abs( expression )
Copy

Beispiele

SQL Server

SELECT ABS(-5);
Copy

Ergebnis:

ABS(-5)

5

Snowflake SQL
SELECT ABS(-5);
Copy

Ergebnis:

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);
Copy

Ergebnis:

COMPUTE_ABS(-5)

5

AVG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Bemerkung

Der Code-Abschnitt für SnowConvert AI-Hilfefunktionen wird weggelassen.

Diese Funktion gibt den Durchschnitt der Werte in einer Gruppe zurück. Es ignoriert Nullwerte. (AVG in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
AVG ( [ ALL | DISTINCT ] expression )  
   [ OVER ( [ partition_by_clause ] order_by_clause ) ]
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

AVG( [ DISTINCT ] <expr1> )

AVG( [ DISTINCT ] <expr1> ) OVER (
                                 [ PARTITION BY <expr2> ]
                                 [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
                                 )
Copy

Beispiele

SQL Server

SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
Copy

Ergebnis:

AVG_VACATIONS

50

Snowflake SQL
SELECT AVG(VACATIONHOURS) AS AVG_VACATIONS FROM HUMANRESOURCES.EMPLOYEE;
Copy

Ergebnis:

AVG_VACATIONS

50

CEILING

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Eine mathematische Funktion, die die kleinste größere ganze Zahl zurückgibt, die größer/gleich der als Parameter übergebenen Zahl ist (CEILING in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
CEILING( expression )
Copy
Snowflake SQL
CEIL( <input_expr> [, <scale_expr> ] )
Copy
JavaScript
 Math.ceil( expression )
Copy

Beispiele

SQL Server

SELECT CEILING(642.20);
Copy

Ergebnis:

CEILING(642.20)

643

Snowflake SQL
SELECT CEIL(642.20);
Copy

Ergebnis:

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);
Copy

Ergebnis:

COMPUTE_CEIL(642.20)|
--------------------|
                 643|
Copy

FLOOR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt die größte ganze Zahl zurück, die kleiner oder gleich dem angegebenen numerischen Ausdruck ist. (FLOOR in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
FLOOR ( numeric_expression )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

FLOOR( <input_expr> [, <scale_expr> ] )
Copy

Beispiele

SQL Server

SELECT FLOOR (124.87) AS FLOOR;
Copy

Ergebnis:

FLOOR|
-----|
  124|
Copy
Snowflake SQL
SELECT FLOOR (124.87) AS FLOOR;
Copy

Ergebnis:

FLOOR|
-----|
  124|
Copy

POWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den Wert des angegebenen Ausdrucks in der angegebenen Potenz zurück. (POWER in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
POWER ( float_expression , y )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

POW(x, y)

POWER (x, y)
Copy

Beispiele

SQL Server

SELECT POWER(2, 10.0) AS IntegerResult
Copy

Ergebnis:

IntegerResult |
--------------|
          1024|
Copy
Snowflake SQL
SELECT POWER(2, 10.0) AS IntegerResult;
Copy

Ergebnis:

IntegerResult |
--------------|
          1024|
Copy

Zugehörige Dokumentation

ROUND

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen numerischen Wert zurück, gerundet auf die angegebene Länge oder Genauigkeit. (ROUND in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
ROUND ( numeric_expression , length [ ,function ] )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

ROUND( <input_expr> [, <scale_expr> ] )
Copy

Beispiele

SQL Server

SELECT ROUND(123.9994, 3) AS COL1, ROUND(123.9995, 3) AS COL2;  
Copy

Ergebnis:

COL1    |COL2    |
--------|--------|
123.9990|124.0000|
Copy
Snowflake SQL
SELECT ROUND(123.9994, 3) AS COL1,
ROUND(123.9995, 3) AS COL2;
Copy

Ergebnis:

COL1   | COL2  |
--------|------|
123.999|124.000|
Copy

Zugehörige Dokumentation

SQRT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt die Quadratwurzel des angegebenen Gleitkommawerts zurück. (SQRT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SQRT ( float_expression )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

SQRT(expr)
Copy

Beispiele

SQL Server

SELECT SQRT(25) AS RESULT;
Copy

Ergebnis:

RESULT|
------|
   5.0|
Copy
Snowflake SQL
SELECT SQRT(25) AS RESULT;
Copy

Ergebnis:

RESULT|
------|
   5.0|
Copy

SQUARE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt das Quadrat des angegebenen Gleitkommawerts zurück. (SQUARE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SQUARE ( float_expression )  ****
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

SQUARE(expr)
Copy

Beispiele

SQL Server

SELECT SQUARE (5) AS SQUARE;
Copy

Ergebnis:

SQUARE|
------|
  25.0|
Copy
Snowflake SQL
SELECT SQUARE (5) AS SQUARE;
Copy

Ergebnis:

SQUARE|
------|
    25|
Copy

STDEV

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Gibt die statistische Standardabweichung aller Werte im angegebenen Ausdruck zurück. (STDEV in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
 STDEV ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

 STDDEV( [ DISTINCT ] <expression_1> )
Copy

Beispiele

SQL Server

SELECT
    STDEV(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS STDEV;
Copy

Ergebnis:

           STDEV|
----------------|
28.7862150320948|
Copy
Snowflake SQL
SELECT
    STDDEV(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS STDEV;
Copy

Ergebnis:

       STDEV|
------------|
28.786215034|
Copy

STDEVP

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Liefert die statistische Standardabweichung für die Grundgesamtheit für alle Werte im angegebenen Ausdruck. (STDVEP in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
STDEVP ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

STDDEV_POP( [ DISTINCT ] expression_1)
Copy

Beispiele

SQL Server

SELECT
    STDEVP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
    HumanResources.Employee;
Copy

Ergebnis:

STDEVP_VACATIONHOURS|
--------------------|
  28.736540767245085|
Copy
Snowflake SQL
SELECT
    STDDEV_POP(VACATIONHOURS) AS STDEVP_VACATIONHOURS
FROM
    HumanResources.Employee;
Copy

Ergebnis:

STDEVP_VACATIONHOURS|
--------------------|
        28.736540763|
Copy

VAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Bemerkung

Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.

Beschreibung

Gibt die statistische Varianz aller Werte im angegebenen Ausdruck zurück. (VAR in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
VAR ( [ ALL | DISTINCT ] expression )  
Copy
Snowflake SQL
VAR_SAMP( [DISTINCT] <expr1> )
Copy

Beispiele

SQL Server

SELECT
    VAR(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS VAR;
Copy

Ergebnis:

             VAR|
----------------|
28.7862150320948|
Copy
Snowflake SQL
SELECT
    VAR_SAMP(VACATIONHOURS)
FROM
    HUMANRESOURCES.EMPLOYEE AS VAR;
Copy

Ergebnis:

       VAR|
----------|
828.646176|
Copy

POWER

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den Wert des angegebenen Ausdrucks für eine bestimmte Potenz zurück.\ (POWER in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

POWER( base, exp )
Copy

Argumente

base: Basis der Zahl, es muss ein Float-Ausdruck sein.\ exp: Potenz, mit der die Basis erhöht wird.

Return Type

Der Rückgabetyp hängt von dem Eingabeausdruck ab:

Input TypeReturn Type
float, realfloat
decimal(p, s)decimal(38, s)
int, smallint, tinyintint
bigintbigint
money, smallmoneymoney
bit, char, nchar, varchar, nvarcharfloat

Beispiele

Abfrage

SELECT POWER(2, 3)
Copy

Ergebnis

POWER(2, 3)|
-----------|
        8.0|
Copy

POW in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt die Basis der Potenz des Exponenten zurück. (Dokumentation zur JavaScript-Funktion POW).

Beispielhaftes Quellcode-Muster

Syntax

 Math.pow( base, exp )
Copy
Argumente

base: Basis der Zahl, es muss ein Float-Ausdruck sein.\ exp: Potenz, mit der die Basis erhöht wird.

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

 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);
Copy
Ergebnis
COMPUTE_POW(2, 3)|
-----------------|
                8|
Copy

ACOS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkosinus im Bogenmaß der als Parameter übergebenen Zahl zurückgibt (ACOS in Transact-SQL).

Mathematisch gesehen ist der Arkosinus die Umkehrfunktion des Kosinus, woraus sich die folgende Definition ergibt:\ $$y = cos^{-1} \Linksrechtspfeil x = cos(y)$$

Für $$y = cos^{-1}(x)$$:\ - Bereich: $$0\leqslant y \leqslant \pi$$ oder $$0^{\circ}\leqslant y \leqslant 180^{\circ}$$\ - Bereich: $$-1\leqslant x \leqslant 1$$

Beispielhaftes Quellcode-Muster

Syntax

ACOS ( expression )
Copy

Argumente

expression: Numerischer Float-Ausdruck, wobei der Ausdruck in $$[-1,1]$$ liegt.

Return Type

Numerischer Float-Ausdruck zwischen 0 und π. Wenn der per Parameter gesendete numerische Ausdruck außerhalb des Bereichs $$[-1, 1]$$ liegt, gibt die Datenbankmaschine einen Fehler aus.

Beispiele

Abfrage

SELECT ACOS(-1.0);
Copy

Ergebnis

ACOS(-1.0)       |
-----------------|
3.141592653589793|
Copy

ACOS in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkosinus einer bestimmten Zahl zurückgibt. (Dokumentation zur JavaScript-Funktion ACOS).

Beispielhaftes Quellcode-Muster

Syntax

 Math.acos( expression )
Copy
Argumente

expression: Numerischer Ausdruck, wobei der Ausdruck in $$[-1,1]$$ liegt.

Return Type

Numerischer Ausdruck zwischen 0 und π. Wenn der als Parameter übergebene numerische Ausdruck außerhalb des Bereichs des Arkosinus im Bogenmaß $$[-1, 1]$$ liegt, gibt die Funktion NaN zurück.

Beispiele

Abfrage

 CREATE OR REPLACE FUNCTION compute_acos(a double)
  RETURNS double
  LANGUAGE JAVASCRIPT
AS
$$
  return Math.acos(A);
$$
;
SELECT COMPUTE_ACOS(-1);
Copy
Ergebnis
COMPUTE_ACOS(-1)|
---------------|
    3.141592654|
Copy

ASIN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkussinus im Bogenmaß der als Parameter übergebenen Zahl zurückgibt (ASIN in Transact-SQL).

Der Arkussinus ist die Umkehrfunktion des Sinus, zusammengefasst in der folgenden Definition:\ $$y = sin^{-1} \Linksrechtspfeil x = sin(x)$$

Für $$y = sin^{-1}(x)$$:\ - Bereich: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ oder $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$$ - Bereich: $$-1\leqslant x \leqslant 1$$

Beispielhaftes Quellcode-Muster

Syntax

ASIN( expression )
Copy

Argumente

expression: Numerischer Float-Ausdruck, wobei der Ausdruck in $$[-1,1]$$ liegt.

Return Type

Numerischer Float-Ausdruck zwischen $$-\frac{\pi}{2}$$ und $$\frac{\pi}{2}$$. Wenn der als Parameter gesendete numerische Ausdruck nicht in $$[-1, 1]$$ liegt, gibt die Datenbank-Engine einen Fehler aus.

Beispiele

Abfrage

SELECT ASIN(0.5);
Copy

Ergebnis

ASIN(0.5)         |
------------------|
0.5235987755982989|
Copy

ASIN in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkussinus einer bestimmten Zahl zurückgibt. (Dokumentation zurJavaScript-Funktion ASIN).

Beispielhaftes Quellcode-Muster

Syntax

 Math.asin( expression )
Copy
Argumente

expression: Numerischer Ausdruck, wobei der Ausdruck in $$[-1,1]$$ liegt.

Return Type

Numerischer Ausdruck zwischen $$-\frac{\pi}{2}$$ und $$\frac{\pi}{2}$$. Wenn der als Parameter übergebene numerische Ausdruck außerhalb des Bereichs des Arkosinus $$[-1, 1]$$ liegt, gibt die Funktion NaN zurück.

Beispiele

Abfrage

 CREATE OR REPLACE FUNCTION compute_asin(a float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  return Math.asin(A);
$$
;
SELECT COMPUTE_ASIN(0.5);
Copy
Ergebnis
COMPUTE_ASIN(1)   |
------------------|
      0.5235987756|
Copy

COS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Kosinus des über Parameter gesendeten Winkels zurückgibt (muss im Bogenmaß gemessen werden) (COS in Transact-SQL).

Der Kosinus ist definiert als:\ $$y = cos(x)$$\ Wo:\ - Bereich: $$-1\leqslant y \leqslant 1$$- Bereich: $$\mathbb{R}$$

Beispielhaftes Quellcode-Muster

Syntax

COS( expression )
Copy

Argumente

expression: Numerischer Float-Ausdruck, wobei Ausdruck in $$\mathbb{R}$$ ist.

Return Type

Numerischer Float-Ausdruck in $$[-1, 1]$$.

Beispiele

Abfrage

SELECT COS(PI())
Copy

Ergebnis

COS(PI())|
---------|
     -1.0|
Copy

COS in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Statische Funktion, die den Kosinus eines Winkels im Bogenmaß zurückgibt (Dokumentation zurJavaScript COS-Funktion).

Beispielhaftes Quellcode-Muster

Syntax

 Math.cos( expression )
Copy
Argumente

expression: Numerische Ausdrücke.

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

CREATE OR REPLACE FUNCTION compute_cos(angle float)
RETURNS float
LANGUAGE JAVASCRIPT
AS
$$
  return Math.cos(ANGLE); 
$$
;
SELECT COMPUTE_COS(PI());
Copy
Ergebnis
COMPUTE_COS(PI())|
-----------------|
               -1|
Copy

COT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den Kotangens des Winkels im Bogenmaß zurück, der über die Parameter (COT in Transact-SQL) gesendet wird.

Der Kosinus ist definiert als:\ $$cot(x) = \frac{cos(x)}{sin(x)}$$ oder $$cot(x) = \frac{1}{tan(x)}$$\ Um den Kosinus zu berechnen, muss der Parameter den Einschränkungen der Funktionen Sinus und Kosinus entsprechen.

Beispielhaftes Quellcode-Muster

Syntax

COT( expression )
Copy

Argumente

expression: Numerischer Float-Ausdruck, wobei Ausdruck in $$\mathbb{R}-{sin(expression)=0 \wedge tan(expression) =0}$$ ist.

Return Type

Numerischer Float-Ausdruck in $$\mathbb{R}$$.

Beispiele

Abfrage

SELECT COT(1)
Copy

Ergebnis

COT(1)            |
------------------|
0.6420926159343306|
Copy

COT in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Leider bietet das Objekt Mathin JavaScript keine Methode zur Berechnung des Kotangens eines gegebenen Winkels.\ Dies könnte mit der Gleichung: $$cot(x) = \frac{cos(x)}{sin(x)}$$ berechnet werden

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function cot(angle){
    return Math.cos(angle)/Math.sin(angle);
}
Copy
Argumente

angle: Numerischer Ausdruck im Bogenmaß.

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

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);
Copy
Ergebnis
COMPUTE_COT(1);   |
------------------|
0.6420926159343308|
Copy

RADIANS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertiert Grad in Bogenmaß.\ (RADIANS in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

RADIANS( expression )
Copy

Argumente

expression: Numerischer Ausdruck in Grad.

Return Type

Derselbe Datentyp wird über den Parameter als numerischer Ausdruck im Bogenmaß gesendet.

Beispiele

Abfrage

SELECT RADIANS(180.0)
Copy

Ergebnis

RADIANS(180)

3.141592653589793116

Bemerkung

Wandeln Sie den Parameter dieser Funktion in einen Gleitkommawert um, andernfalls gibt die obige Anweisung 3 statt des Wertes PI zurück.

RADIANS in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

JavaScript stellt keine Methode zur Umrechnung von Grad in Bogenmaß eines bestimmten Winkels zur Verfügung. Dies könnte mit der folgenden Gleichung berechnet werden: $$Bogenmaß = \frac{\pi}{180^{\circ}} \cdot Winkel$$

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function radians(angle){
    return (Math.PI/180) * angle;
}
Copy
Argumente

winkel: Fließkomma-Ausdruck in Grad.

Return Type

Derselbe Datentyp wird über den Parameter als numerischer Ausdruck im Bogenmaß gesendet.

Beispiele

Abfrage

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);
Copy
Ergebnis

RADIANS(180)

3.141592654

PI

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Liefert den konstanten Wert von PI\ (PI in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

PI( )
Copy

Argumente

Diese Methode erhält keine Parameter.

Return Type

Float.

Beispiele

Abfrage

CREATE PROCEDURE CIRCUMFERENCE @radius float
AS 
    SELECT 2 * PI() * @radius;
GO:

EXEC CIRCUMFERENCE @radius = 2;
Copy

Ergebnis

CIRCUMFERENCE @radius = 2 |
--------------------------|
          12.5663706143592|
Copy

PI in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konstante, die die Zahl PI darstellt (ungefähr 3,141592…)\ (JavaScript PI-Dokumentation).

Beispielhaftes Quellcode-Muster

Syntax

 Math.PI
Copy

Beispiele

Abfrage

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);
Copy
Ergebnis
  CIRCUMFERENCE(2)|
------------------|
12.566370614359172|
Copy

DEGREES

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertiert den über Parameter gesendeten Winkel im Bogenmaß in Grad (DEGREES in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

DEGREES( expression )
Copy

Argumente

expression: Numerischer Float-Ausdruck im Bogenmaß.

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

SELECT DEGREES(PI())
Copy

Ergebnis

DEGREES(PI())|
-------------|
        180.0|
Copy

DEGREES in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

JavaScript stellt keine Methode zur Umrechnung von Bogenmaß in Grad eines bestimmten Winkels zur Verfügung. Dies könnte mit der folgenden Gleichung berechnet werden: $$Grad = \frac{180^{\circ}}{\pi} \cdot angle$$

Beispielhaftes Quellcode-Muster

Beispiel für die Implementierung

 function degress(angle){
    return (180/Math.PI) * angle;
}
Copy
Argumente

angle: Numerischer Ausdruck im Bogenmaß.

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

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());
Copy
Ergebnis
COMPUTE_DEGREES(PI())|
---------------------|
                180.0|
Copy

LOG

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Liefert den natürlichen Logarithmus einer Zahl\ (LOG in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

LOG( expression [, base ] )
Copy

Argumente

expression: Numerischer Ausdruck.

basis (optional): Basis für die Berechnung des Logarithmus einer Zahl, standardmäßig ist dies die Euler-Basis.

Return Type

Float.

Beispiele

Abfrage

SELECT LOG(8, 2)
Copy

Ergebnis

LOG(8, 2)  |
-----------|
          3|
Copy

LOG in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Liefert den Logarithmus unter Verwendung der Eulerschen Zahl als Basis. (Dokumentation zur JavaScript-Funktion LOG).

Warnung

Leider bietet JavaScript keine Methode, die eine Logarithmusbasis über ihre Parameter empfängt, aber das lässt sich lösen, indem man die Basis durch das Argument dividiert.

Beispielhaftes Quellcode-Muster

Syntax

 Math.log( expression )
Copy
Argumente

expression: Numerischer Ausdruck. Er muss positiv sein, andernfalls wird NaN zurückgegeben.\

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

 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);
Copy
Ergebnis
BASE_LOG(2, 8)|
--------------|
             3|
Copy

ATAN

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkustangens im Bogenmaß der als Parameter übergebenen Zahl zurückgibt (ATAN in Transact-SQL).

Der Arkustangens ist die Umkehrfunktion des Tangens, zusammengefasst in der folgenden Definition:\ $$y = arctan^{-1} \Leftrightarrow x = tan(x)$$

Für $$y = tan^{-1}(x)$$:\ - Bereich: $$-\frac{\pi}{2}\leqslant y \leqslant \frac{\pi}{2}$$ oder $$-90^{\circ}\leqslant y \leqslant 90^{\circ}$$$\ - Bereich: $$\mathbb{R}$$

Beispielhaftes Quellcode-Muster

Syntax

ATAN( expression )
Copy

Argumente

expression: Numerischer Float-Ausdruck, oder ein numerischer Typ, der in Float konvertiert werden kann.

Return Type

Numerischer Float-Ausdruck zwischen $$-\frac{\pi}{2}$$ und $$\frac{\pi}{2}$$.

Beispiele

Abfrage

SELECT ATAN(-30);
Copy

Ergebnis

ATAN(-30)          |
-------------------|
-1.5374753309166493|
Copy

ATAN in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkustangens einer bestimmten Zahl zurückgibt. (Dokumentation zur JavaScript-Funktion ATAN).

Beispielhaftes Quellcode-Muster

Syntax

 Math.atan( expression )
Copy
Argumente

expression: Numerischer Ausdruck.

Return Type

Numerischer Ausdruck zwischen $$-\frac{\pi}{2}$$ und $$\frac{\pi}{2}$$.

Beispiele

Abfrage

 CREATE OR REPLACE FUNCTION compute_atan(a float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
  return Math.atan(A);
$$
;
SELECT COMPUTE_ATAN(-30);
Copy
Ergebnis
COMPUTE_ATAN(-30)|
-----------------|
     -1.537475331|
Copy

ATN2

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkustangens im Bogenmaß von zwei als Parameter übergebenen Koordinaten zurückgibt (ATN2 in Transact-SQL).

Für $$z = tan^{-1}(x, y)$$:\ - Bereich: $$-\pi\leqslant z \leqslant \pi$$ oder $$-180^{\circ}\leqslant z \leqslant 180^{\circ}$$\ - Bereich: $$\mathbb{R}$$

Beispielhaftes Quellcode-Muster

Syntax

ATN2( expression_1, expression_2 )
Copy

Argumente

expression1und expression2: Numerische Ausdrücke.

Return Type

Numerischer Ausdruck zwischen $$-\pi$$ und $$\pi$$.

Beispiele

Abfrage

SELECT ATN2(7.5, 2);
Copy

Ergebnis

ATN2(7.5, 2)      |
------------------|
1.3101939350475555|
Copy

ATAN2 in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Funktion, die den Arkustangens von zwei Parametern zurückgibt. (Dokumentation zur JavaScript-Funktion ATAN2).

Beispielhaftes Quellcode-Muster

Syntax

 Math.atan2( expression_1, expression_2 )
Copy
Argumente

expression_1und expression_2: Numerische Ausdrücke.

Return Type

Numerischer Ausdruck zwischen $$-\pi$$ und $$\pi$$.

Beispiele

Abfrage

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);
Copy
Ergebnis
ATAN2(7.5, 3)     |
------------------|
       1.310193935|
Copy

LOG10

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Liefert den Logarithmus zur Basis 10 einer Zahl\ (LOG10 in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

LOG10( expression )
Copy

Argumente

expression: Numerischer Ausdruck, muss positiv sein.

Return Type

Float.

Beispiele

Abfrage

SELECT LOG10(5)
Copy

Ergebnis

LOG10(5)         |
-----------------|
0.698970004336019|
Copy

LOG10 in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Liefert den Logarithmus zur Basis 10 einer Zahl\ (Dokumentation zur JavaScript-Funktion LOG10).

Beispielhaftes Quellcode-Muster

Syntax

 Math.log10( expression )
Copy
Argumente

expression: Numerischer Ausdruck. Er muss positiv sein, andernfalls wird NaN zurückgegeben.\

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

 CREATE OR REPLACE FUNCTION compute_log10(argument float)
  RETURNS float
  LANGUAGE JAVASCRIPT
AS
$$
    return Math.log10(ARGUMENT);
$$
;
SELECT COMPUTE_LOG10(7.5);
Copy
Ergebnis
COMPUTE_LOG10(5)|
----------------|
    0.6989700043|
Copy

EXP

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Liefert den Exponentialwert von Euler (EXP in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

EXP( expression )
Copy

Argumente

expression: Numerischer Ausdruck.

Return Type

Derselbe Datentyp, der über den Parameter als numerischer Ausdruck gesendet wird.

Beispiele

Abfrage

SELECT EXP(LOG(20)), LOG(EXP(20))  
GO 
Copy

Ergebnis

EXP(LOG(20))   |LOG(EXP(20))    |
---------------|----------------|
           20.0|            20.0|
Copy

EXP in JS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konstante, die die Eulersche Zahl darstellt (ungefähr 2,718…)\ (Dokumentation zur JavaScript Eulersche Zahl). \ JavaScript ermöglicht verschiedene Operationen mit dieser Konstante, anstelle von Transact-SQL, das nur das Exponential von Euler unterstützt.

Beispielhaftes Quellcode-Muster

Syntax

 Math.E
Copy

Beispiele

Abfrage

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));
Copy
Ergebnis
COMPUTE_EXP(LOG(20))|LOG(COMPUTE_EXP(20))|
--------------------|--------------------|
                20.0|                20.0|
Copy

Konvertierungsfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Datum/Uhrzeit-Funktionen in Transact-SQL zu Snowflake SQL-Code.

CONVERT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertieren Sie einen Ausdruck von einem Datentyp in einen anderen. (CONVERT in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

CAST( <source_expr> AS <target_data_type> )
Copy

Beispiele

SQL Server

SELECT CONVERT(INT, '1998') as MyDate
Copy
Ergebnis

MyDate

1998

Snowflake SQL
SELECT
CAST('1998' AS INT) as MyDate;
Copy
Ergebnis

MYDATE

1998

Datumstyp in Varchar umwandeln
SQL Server
SELECT CONVERT(varchar, getdate(), 1) AS RESULT;
Copy
Ergebnis

RESULT

12/08/22

Snowflake SQL
SELECT
TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy') AS RESULT;
Copy
Ergebnis

RESULT

12/08/22

Datumstyp in Varchar mit Größe umwandeln
SQL Server
SELECT CONVERT(varchar(2), getdate(), 1) AS RESULT;
Copy
Ergebnis

RESULT

07

Snowflake SQL
SELECT
LEFT(TO_VARCHAR(CURRENT_TIMESTAMP() :: TIMESTAMP, 'mm/dd/yy'), 2) AS RESULT;
Copy
Ergebnis

RESULT

07

Die unterstützten Formate für Datumsübertragungen sind:

Datumsformate

Code

Format

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

Uhrzeitformate

Code

Format

8

hh:mm:ss

14

hh:mm:ss:ff3

24

hh:mm:ss

108

hh:mm:ss

114

hh:mm:ss:ff3

Datums- und Uhrzeitformate

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

Daten nach dem islamischen Kalender

Code

Format

130

dd mmm yyyy hh:mi:ss:ff3 AM/PM

131

dd mmm yyyy hh:mi:ss:ff3 AM/PM

Wenn es kein Muster gibt, das mit dem aktuellen Code übereinstimmt, wird er in yyyy-mm-dd hh:mm:ss formatiert

TRY_CONVERT

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen in den angegebenen Datentyp umgewandelten Wert zurück, wenn die Umwandlung erfolgreich war; andernfalls wird null zurückgegeben.

(SQL Server-Referenz: TRY_CONVERT)

Syntax

TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )  
Copy

Quellcode-Muster

Grundlegende Transformation

Um diese Funktion umzuwandeln, müssen wir zunächst die Parameter des TRY_CONVERT überprüfen.

TRY_CONVERT( INT, 'test')
Copy

Wenn der Ausdruck, der umgewandelt werden muss, eine Zeichenfolge ist, wird er in TRY_CAST umgewandelt, was eine Funktion von Snowflake ist.

TRY_CAST( 'test' AS INT)
Copy

TRY_CAST

TRY_CAST hat die gleiche Transformation wie TRY_CONVERT.

Beispiel
Sql Server
SELECT TRY_CAST('12345' AS NUMERIC) NUMERIC_RESULT,
 TRY_CAST('123.45' AS DECIMAL(20,2)) DECIMAL_RESULT,
 TRY_CAST('123' AS INT) INT_RESULT,
 TRY_CAST('123.02' AS FLOAT) FLOAT_RESULT,
 TRY_CAST('123.02' AS DOUBLE PRECISION) DOUBLE_PRECISION_RESULT,

 TRY_CAST('2017-01-01 12:00:00' AS DATE) DATE_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS DATETIME) DATETIME_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS SMALLDATETIME) SMALLDATETIME_RESULT,
 TRY_CAST('12:00:00' AS TIME) TIME_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS TIMESTAMP) TIMESTAMP_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS DATETIMEOFFSET) DATETIMEOFFSET_RESULT,

 TRY_CAST(1234 AS VARCHAR) VARCHAR_RESULT,
 TRY_CAST(1 AS CHAR) CHAR_RESULT,
 TRY_CAST('2017-01-01 12:00:00' AS SQL_VARIANT) SQL_VARIANT_RESULT,
 TRY_CAST('LINESTRING(-122.360 47.656, -122.343 47.656 )' AS GEOGRAPHY) GEOGRAPHY_RESULT;
Copy

Das Ergebnis ist dasselbe wie bei dem Beispiel von 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;
Copy

Bekannte Probleme

Wenn der Datentyp Varchar oder Char ist, wird er anders umgewandelt.

TRY_CONVERT(VARCHAR, 1234);
TRY_CONVERT(CHAR, 1);
Copy

Wenn TRY_CAST zusammen mit VARCHAR oder CHAR in Snowflake verwendet wird, führt dies zu einem Fehler, so dass es in

TO_VARCHAR(1234);
TO_CHAR(1);
Copy

Dasselbe geschieht mit den Datentypen von SQL_VARIANT und GEOGRAPHY.

TRY_CONVERT(SQL_VARIANT, '2017-01-01 12:00:00');
TRY_CONVERT(GEOGRAPHY, 'LINESTRING(-122.360 47.656, -122.343 47.656 )');
Copy

Werden umgewandelt in

TO_VARIANT('2017-01-01 12:00:00');
TO_GEOGRAPHY('LINESTRING(-122.360 47.656, -122.343 47.656 )');
Copy

Wenn der Ausdruck keine Zeichenfolge ist, besteht eine sehr hohe Wahrscheinlichkeit, dass er fehlschlägt, da TRY_CAST von Snowflake nur mit Zeichenfolgenausdrücken funktioniert.

In diesem Fall wird eine weitere Transformation durchgeführt

TRY_CAST(14.85 AS INT)
Copy

Wird umgewandelt in

CAST(14.85 AS INT) /*** SSC-FDM-TS0005 - TRY_CONVERT/TRY_CAST COULD NOT BE CONVERTED TO TRY_CAST ***/
Copy

Bei diesen Transformationen kann es zu Problemen kommen, je nachdem, was mit den Funktionen gemacht wird. TRY_CONVERT von SqlServer gibt Nullen zurück, wenn die Konvertierung nicht möglich war.

Dies kann verwendet werden, um eine Logik wie diese auszuführen

SELECT 
    CASE
        WHEN TRY_CONVERT( INT, 'Expression') IS NULL
        THEN 'FAILED'
        ELSE 'SUCCEDDED'
    END;
Copy

Diese Art von Bedingungen mit TRY_CONVERT kann mit TRY_CAST verwendet werden, aber was passiert, wenn es in TO\_VARCHAR, TOCHAR oder in CAST umgewandelt wird? Wenn die Konvertierung in diesen Funktionen fehlschlägt, wird ein Fehler ausgegeben, anstatt einfach null zurückzugeben.

Beispiele

In diesem Beispiel haben wir mehrere TRY_CONVERT mit verschiedenen Datentypen

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;
Copy

Wenn wir diesen Select migrieren, erhalten wir das folgende Ergebnis

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;
Copy

Lassen Sie uns jede einzelne ausführen und das Ergebnis vergleichen.

Alias

SqlServer-Ergebnis

Snowflake-Ergebnis

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“ }

Zugehörige EWIs

  1. [SSC-FDM-TS0005](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0005): TRY_CONVERT/TRY_CAST konnte nicht in TRY_CAST umgewandelt werden.

Datums- und Uhrzeitfunktionen

Dieser Abschnitt beschreibt die funktionalen Äquivalente von Datum/Uhrzeit-Funktionen in Transact-SQL zu Snowflake SQL und JavaScript Code.

AT TIME ZONE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Konvertiert ein Eingangsdatum in den entsprechenden Datetimeoffset Wert in der Zielzeitzone. (AT TIME ZONE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
inputdate AT TIME ZONE timezone
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> )

CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
Copy

Beispiele

SQL Server

SELECT CAST('2022-11-24 11:00:45.2000000 +00:00' as datetimeoffset) at time zone 'Alaskan Standard Time';
Copy

Ergebnis:

                          DATE|
------------------------------|
2022-11-24 02:00:45.200 -09:00|
Copy
Snowflake SQL
SELECT
CONVERT_TIMEZONE('America/Anchorage', CAST('2022-11-24 11:00:45.2000000 +00:00' as TIMESTAMP_TZ(7)));
Copy

Ergebnis:

                          DATE|
------------------------------|
2022-11-24 02:00:45.200 -09:00|
Copy
SQL Server
SELECT current_timestamp at time zone 'Central America Standard Time';
Copy

Ergebnis:

                          DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
Copy
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 ***/);
Copy

Ergebnis:

                          DATE|
------------------------------|
2022-10-10 10:55:50.090 -06:00|
Copy

Bekannte Probleme

  1. Snowflake unterstützt nicht alle Zeitzonen, die SQL Server unterstützt. Sie können die unterstützten Zeitzonen unter diesem Link überprüfen.

SQL Server

SELECT current_timestamp at time zone 'Turks And Caicos Standard Time';
Copy

Ergebnis:

                          DATE|
------------------------------|
2022-12-14 20:04:18.317 -05:00| 
Copy
Snowflake SQL
SELECT
!!!RESOLVE EWI!!! /*** SSC-EWI-TS0063 - TIME ZONE NOT SUPPORTED IN SNOWFLAKE ***/!!!
CURRENT_TIMESTAMP() at time zone 'Turks And Caicos Standard Time';
Copy

Zugehörige EWIs

  1. [SSC-FDM-TS0024](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/sqlServerFDM. md#ssc-fdm-ts0024): CURRENT_TIMESTAMP in der AT TIME ZONE-Anweisung kann in bestimmten Fällen eine andere Verhaltensweise aufweisen.

  2. [SSC-EWI-TS0063](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/sqlServerEWI. md#ssc-ewi-ts0063): Zeitzone wird in Snowflake nicht unterstützt.

DATEADD

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt eine Ganzzahl zurück, die den angegebenen Datumsanteil des angegebenen Datums darstellt. (DATEPART in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DATEADD (datepart , number , date )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

DATEADD( <date_or_time_part>, <value>, <date_or_time_expr> )
Copy

Beispiele

SQL Server

SELECT DATEADD(year,123, '20060731') as ADDDATE;  
Copy

Ergebnis:

                 ADDDATE|
------------------------|
 2129-07-31 00:00:00.000|
Copy
Snowflake SQL
SELECT
DATEADD(year, 123, '20060731') as ADDDATE;
Copy

Ergebnis:

                 ADDDATE|
------------------------|
 2129-07-31 00:00:00.000|
Copy

DATEDIFF

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt die Anzahl (als vorzeichenbehafteten Integer-Wert) der angegebenen Datumsgrenzen zurück, die zwischen dem angegebenen Startdatum und Enddatum überschritten wurden. (DATEDIFF in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DATEDIFF ( datepart , startdate , enddate )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

DATEDIFF( <date_or_time_part>, <date_or_time_expr1>, <date_or_time_expr2> )
Copy

Beispiele

SQL Server

SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
Copy

Ergebnis:

DIFF

1

Snowflake SQL
SELECT DATEDIFF(year,'2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
Copy

Ergebnis:

DIFF

1

DATEFROMPARTS

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt einen Datumswert zurück, der den angegebenen Jahres-, Monats- und Tageswerten zugeordnet ist. (DATEFROMPARTS in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DATEFROMPARTS ( year, month, day )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

DATE_FROM_PARTS( <year>, <month>, <day> )
Copy

Beispiele

SQL Server

SELECT DATEFROMPARTS ( 2010, 12, 31 ) AS RESULT;  
Copy

Ergebnis:

RESULT

2022-12-12

Snowflake SQL
SELECT DATE_FROM_PARTS ( 2010, 12, 31 ) AS RESULT;
Copy

Ergebnis:

RESULT

2022-12-12

DATENAME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt eine Zeichenfolge zurück, die den angegebenen Datumsteil des angegebenen Datums darstellt. (DATENAME in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DATENAME ( datepart , date )  
Copy
Snowflake SQL

Bemerkung

Diese Transformation verwendet mehrere Funktionen, die von den Eingaben abhängen

DATE_PART( <date_or_time_part> , <date_or_time_expr> )
MONTHNAME( <date_or_timestamp_expr> )
DAYNAME( <date_or_timestamp_expr> )
Copy

Beispiele

SQL Server

SELECT DATENAME(month, getdate()) AS DATE1,
DATENAME(day, getdate()) AS DATE2,
DATENAME(dw, GETDATE()) AS DATE3;
Copy

Ergebnis:

DATE1

DATE2

DATE3

May

3

Tuesday

Snowflake SQL
SELECT
MONTHNAME_UDF(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE1,
DAYNAME_UDF(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE2,
DAYNAME(CURRENT_TIMESTAMP() :: TIMESTAMP) AS DATE3;
Copy

Ergebnis:

DATE1

DATE2

DATE3

May

Tue

Tue

DATEPART

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt eine Ganzzahl zurück, die den angegebenen Datumsanteil des angegebenen Datums darstellt. (DATEPART in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DATEPART ( datepart , date )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

DATE_PART( <date_or_time_part> , <date_or_time_expr> )
Copy

Beispiele

SQL Server

SELECT DATEPART(YEAR, '10-10-2022') as YEAR
Copy

Ergebnis:

YEAR

2022

Snowflake SQL
SELECT
DATE_PART(YEAR, '10-10-2022' :: TIMESTAMP) as YEAR;
Copy

Ergebnis:

YEAR

2022

DAY

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt eine ganze Zahl zurück, die den Tag (Tag des Monats) des angegebenen Datums darstellt. (DAY in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
DAY ( date )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

DAY( <date_or_timestamp_expr> )
Copy

Beispiele

SQL Server

SELECT DAY('10-10-2022') AS DAY
Copy

Ergebnis:

DAY

10

Snowflake SQL
SELECT DAY('10-10-2022' :: TIMESTAMP) AS DAY;
Copy

Ergebnis:

DAY

10

EOMONTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Diese Funktion gibt den letzten Tag des Monats zurück, der ein bestimmtes Datum enthält, mit einem optionalen Offset. (EOMONTH in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
EOMONTH ( start_date [, month_to_add ] )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

LAST_DAY( <date_or_time_expr> [ , <date_part> ] )
Copy

Beispiele

SQL Server

SELECT EOMONTH (GETDATE()) AS Result; 
Copy

Ergebnis:

RESULT

2022-05-31

Snowflake SQL
SELECT
LAST_DAY(DATEADD('month', 0, CURRENT_TIMESTAMP() :: TIMESTAMP)) AS Result;
Copy

Ergebnis:

RESULT

2022-05-31

GETDATE

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt den aktuellen Zeitstempel des Datenbanksystems als Datetime-Wert ohne den Zeitzonenoffset der Datenbank zurück. (GETDATE in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
GETDATE() 
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

CURRENT_TIMESTAMP( [ <fract_sec_precision> ] )
Copy

Beispiele

SQL Server

SELECT GETDATE() AS DATE;
Copy

Ergebnis:

DATE

2022-05-06 09:54:42.757

Snowflake SQL
SELECT CURRENT_TIMESTAMP() :: TIMESTAMP AS DATE;
Copy

Ergebnis:

DATE

2022-05-06 08:55:05.422

MONTH

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt eine Ganzzahl zurück, die den Monat des angegebenen Datums darstellt. (MONTH in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
MONTH( date )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

MONTH ( <date_or_timestamp_expr> )
Copy

Beispiele

SQL Server

SELECT MONTH('10-10-2022') AS MONTH
Copy

Ergebnis:

MONTH

10

Snowflake SQL
SELECT MONTH('10-10-2022' :: TIMESTAMP) AS MONTH;
Copy

Ergebnis:

MONTH

10

SWITCHOFFSET

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Die Seite SWITCHOFFSET passt einen gegebenen Zeitstempelwert an eine bestimmte Zeitzonenverschiebung an. Dies geschieht durch numerische Werte. Weitere Informationen finden Sie unter SWITCHOFFSET (Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

Eine UDF-Hilfsfunktion erreicht eine Funktionsäquivalenz, außerdem hat es die gleiche Syntax wie die SWITCHOFFSET-Funktion in SQLServer.

SQLServer
 SWITCHOFFSET ( datetimeoffset_expression, timezoneoffset_expression )   
Copy
Snowflake SQL
 SWITCHOFFSET_UDF ( timestamp_tz_expression, timezoneoffset_expression )   
Copy

Beispiel

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;  
Copy

Ergebnis:

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;
Copy

Ergebnis:

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

Beschreibung

Gibt einen datetime2(7)-Wert zurück, der das Datum und die Uhrzeit des Computers enthält, auf dem die Instanz von SQL Server ausgeführt wird. (SYSDATETIME in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SYSDATETIME ( )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

LOCALTIME()
Copy

Beispiele

SQL Server

SELECT SYSDATETIME ( ) AS SYSTEM_DATETIME;
Copy

Ergebnis:

SYSTEM_DATETIME

2022-05-06 12:08:05.501

Snowflake SQL
SELECT LOCALTIME ( ) AS SYSTEM_DATETIME;
Copy

Ergebnis:

SYSTEM_DATETIME

211:09:14

SYSUTCDATETIME

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt einen datetime2(7)-Wert zurück, der das Datum und die Uhrzeit des Computers enthält, auf dem die Instanz von SQL Server ausgeführt wird. (SYSUTCDATETIME in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
SYSUTCDATETIME ( )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

SYSDATE()
Copy

Beispiele

SQL Server

SELECT SYSUTCDATETIME() as SYS_UTC_DATETIME;
Copy

Ergebnis:

SYSTEM_UTC_DATETIME

2023-02-02 20:59:28.0926502

Snowflake SQL
SELECT
SYSDATE() as SYS_UTC_DATETIME;
Copy

Ergebnis:

SYSTEM_UTC_DATETIME

2023-02-02 21:02:05.557

YEAR

Applies to
  • SQL Server

  • Azure Synapse Analytics

Beschreibung

Gibt eine Ganzzahl zurück, die das Jahr des angegebenen Datums darstellt. (YEAR in Transact-SQL).

Beispielhaftes Quellcode-Muster

Syntax

SQL Server
YEAR( date )  
Copy
Snowflake SQL

Snowflake SQL-Dokumentation

YEAR ( <date_or_timestamp_expr> )
Copy

Beispiele

SQL Server

SELECT YEAR('10-10-2022') AS YEAR
Copy

Ergebnis:

YEAR

2022

Snowflake SQL
SELECT YEAR('10-10-2022' :: TIMESTAMP) AS YEAR;
Copy

Ergebnis:

YEAR

2022