SnowConvert: Funktionale Unterschiede in PostgreSQL¶
SSC-FDM-PG0001¶
Schweregrad¶
Niedrig
Beschreibung¶
Die Eigenschaft FOUND in PostgreSQL zeigt an, ob die letzte Abfrage zu einem Ergebnis geführt hat. Diese Eigenschaft kann durch verschiedene SQL-Befehle geändert werden, darunter INSERT
, UPDATE
, DELETE
, MERGE
, SELECT INTO
, PERFORM
, FETCH
und FOR
-Schleifen. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation.
In Snowflake gibt es in keinem Szenario eine direkte Entsprechung für diese Eigenschaft.
INSERT
UPDATE
DELETE
MERGE
Der Code wird in die Snowflake-Eigenschaft SQLFOUND
konvertiert(Hier ist die Dokumentation), die ähnlich funktioniert wie die PostgreSQL-Eigenschaft FOUND
.
SELECT INTO
: Ruft Daten aus einer Abfrage ab und speichert sie in VariablenPERFORM
: Führt eine Abfrage aus und verwirft die ErgebnisseFETCH
: Ruft in Variablen Zeilen aus einem Cursor ab
Der Code erstellt eine benutzerdefinierte Funktion (User-Defined Function, UDF) mit dem Namen IS_FOUND_UDF
, die die Funktionalität der Eigenschaft FOUND
von PostgreSQL repliziert.
Die Variable SQLFOUND
aktualisiert ihren Wert nur, wenn eine Abfrage mindestens eine Zeile in der Datenbank ändert. Wenn die letzte Abfrage keine Zeilen geändert hat, bleibt der Wert von SQLFOUND
unverändert.
Die Funktion IS_FOUND_UDF
gibt TRUE
nur zurück, wenn die Anweisung eine oder mehrere Zeilen zurückgibt. Wenn die Anweisung keine Zeilen zurückgibt, gibt die Funktion FALSE
zurück.
SQLFOUND-Beispiel¶
INSERT INTO SampleTable (SampleColumn1)
VALUES ('SampleValue0.1');
Da diese Abfrage eine Tabelle verändert, bietet SQLFOUND
eine Funktionalität, die dem Verhalten von PostgreSQL am nächsten kommt.
Beispiel für IS_FOUND\_UDF¶
SELECT SampleColumn FROM SampleTable;
Die Funktion IS_FOUND_UDF()
kommt dem Verhalten von PostgreSQL am nächsten, da sie eine Zeile zurückgibt, ohne die Daten zu ändern.
Quellcode von IS_FOUND\_UDF¶
CREATE OR REPLACE FUNCTION FOUND_UDF()
RETURNS BOOLEAN
LANGUAGE SQL
IMMUTABLE
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "udf", "convertedOn": "09/09/2024" }}'
AS
$$
SELECT (count(*) != 0) FROM TABLE(result_scan(last_query_id()))
$$;
Codebeispiel¶
INSERT-Anweisung:¶
-- Found property used with INSERT statement.
CREATE OR REPLACE FUNCTION FoundUsingInsertFunction()
RETURNS BOOLEAN
AS
$$
BEGIN
INSERT INTO SampleTable (SampleColumn1)
VALUES ('SampleValue0.1');
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with INSERT statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingInsertFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
BEGIN
INSERT INTO SampleTable (SampleColumn1)
VALUES ('SampleValue0.1');
RETURN SQLFOUND /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
UPDATE-Anweisung¶
-- Found property used with UPDATE statement.
CREATE OR REPLACE FUNCTION FoundUsingUpdateFunction()
RETURNS BOOLEAN
AS
$$
BEGIN
UPDATE SampleTable
SET SampleColumn1 = 'SampleValue0.1'
WHERE SampleColumn1 = 'SampleValue0.1';
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with UPDATE statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingUpdateFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
BEGIN
UPDATE SampleTable
SET SampleColumn1 = 'SampleValue0.1'
WHERE SampleColumn1 = 'SampleValue0.1';
RETURN SQLFOUND /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
DELETE-Anweisung¶
-- Found property used with DELETE statement.
CREATE OR REPLACE FUNCTION FoundUsingDeleteFunction()
RETURNS BOOLEAN
AS
$$
BEGIN
DELETE FROM SampleTable
WHERE SampleColumn1 = 'SampleValue0.1';
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with DELETE statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingDeleteFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
BEGIN
DELETE FROM
SampleTable
WHERE SampleColumn1 = 'SampleValue0.1';
RETURN SQLFOUND /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
MERGE-Anweisung¶
-- Found property used with MERGE statement.
CREATE OR REPLACE FUNCTION FoundUsingMergeFunction()
RETURNS BOOLEAN
AS
$$
BEGIN
MERGE INTO SampleTableB B
USING (SELECT * FROM SampleTableA) A
ON B.SampleColumn1 = A.SampleColumn2
WHEN MATCHED THEN DELETE;
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with MERGE statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingMergeFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
BEGIN
MERGE INTO SampleTableB B
USING (SELECT * FROM SampleTableA) A
ON B.SampleColumn1 = A.SampleColumn2
WHEN MATCHED THEN DELETE !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'MergeStatement' NODE ***/!!!;
RETURN SQLFOUND /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
SELECT INTO-Anweisung¶
-- Found property used with SELECT INTO statement.
CREATE OR REPLACE FUNCTION FoundUsingSelectIntoFunction()
RETURNS BOOLEAN
AS
$$
DECLARE
SampleNumber INTEGER;
BEGIN
SELECT 1 INTO SampleNumber;
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with SELECT INTO statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingSelectIntoFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
DECLARE
SampleNumber INTEGER;
BEGIN
SELECT 1 INTO
: SampleNumber;
RETURN FOUND_UDF() /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
EXECUTE-Anweisung:¶
-- Found property used with PERFORM statement.
CREATE OR REPLACE FUNCTION FoundUsingPerformFunction()
RETURNS BOOLEAN
AS
$$
BEGIN
PERFORM 1;
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with PERFORM statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingPerformFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
BEGIN
SELECT
1;
RETURN FOUND_UDF() /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
FETCH-Anweisung:¶
-- Found property used with FETCH statement.
CREATE OR REPLACE FUNCTION FoundUsingFetchFunction ()
RETURNS BOOLEAN
AS
$$
DECLARE
SampleRow VARCHAR;
SampleCursor CURSOR FOR SELECT EmptyColumn FROM EmptyTable;
BEGIN
OPEN SampleCursor;
FETCH SampleCursor;
CLOSE SampleCursor;
RETURN FOUND;
END;
$$
LANGUAGE plpgsql;
-- Found property used with FETCH statement.
!!!RESOLVE EWI!!! /*** SSC-EWI-GP0003 - RETURNING FUNCTION TRANSLATED TO STORED PROCEDURE ***/!!!
CREATE OR REPLACE PROCEDURE FoundUsingFetchFunction ()
RETURNS BOOLEAN
LANGUAGE SQL
AS
$$
DECLARE
SampleRow VARCHAR;
SampleCursor CURSOR FOR SELECT EmptyColumn FROM
EmptyTable;
BEGIN
OPEN SampleCursor;
!!!RESOLVE EWI!!! /*** SSC-EWI-PG0015 - FETCH CURSOR WITHOUT TARGET VARIABLES IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
FETCH SampleCursor;
CLOSE SampleCursor;
RETURN FOUND_UDF() /*** SSC-FDM-PG0001 - FOUND COULD HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE IN SOME SCENARIOS. ***/;
END;
$$;
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0002¶
Beschreibung¶
Diese Warnung erscheint, weil sich der Datentyp bpchar (blank-padded char) in Snowflake möglicherweise anders verhält als varchar. Beide Datentypen können zwar bis zu n Zeichen speichern und verwenden Speicherplatz auf der Grundlage der tatsächlichen Datenlänge, aber sie behandeln nachstehende Leerzeichen unterschiedlich. Bei bpchar werden nachstehende Leerzeichen nicht gespeichert, während sie bei varchar von Snowflake erhalten bleiben.
Um die Speicherung unnötiger Leerzeichen zu vermeiden, können Sie die Funktion RTRIM verwenden. Beachten Sie jedoch, dass dies in manchen Fällen nicht genau die gleiche Funktionalität wie der ursprüngliche Code bietet.
Codebeispiel¶
Eingabecode:¶
CREATE TABLE table1 (
col1 BPCHAR,
col2 BPCHAR(20)
);
SELECT 'Y'::BPCHAR;
SELECT 'Y '::BPCHAR(20);
SELECT COL1::BPCHAR(20) FROM tbl;
Generierter Code:¶
CREATE TABLE table1 (
col1 VARCHAR /*** SSC-FDM-PG0002 - BPCHAR CONVERTED TO VARCHAR. THESE TYPES MAY HAVE SOME FUNCTIONAL DIFFERENCES. ***/,
col2 VARCHAR(20) /*** SSC-FDM-PG0002 - BPCHAR CONVERTED TO VARCHAR. THESE TYPES MAY HAVE SOME FUNCTIONAL DIFFERENCES. ***/
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
SELECT 'Y':: VARCHAR /*** SSC-FDM-PG0002 - BPCHAR CONVERTED TO VARCHAR. THESE TYPES MAY HAVE SOME FUNCTIONAL DIFFERENCES. ***/;
SELECT
RTRIM( 'Y ') :: VARCHAR(20) /*** SSC-FDM-PG0002 - BPCHAR CONVERTED TO VARCHAR. THESE TYPES MAY HAVE SOME FUNCTIONAL DIFFERENCES. ***/;
SELECT
RTRIM( COL1) :: VARCHAR(20) /*** SSC-FDM-PG0002 - BPCHAR CONVERTED TO VARCHAR. THESE TYPES MAY HAVE SOME FUNCTIONAL DIFFERENCES. ***/
FROM
tbl;
Best Practices¶
Die Funktion
rtrim
entfernt nachstehende Leerzeichen, was bei der Auflösung von Speicherunterschieden hilfreich sein kann. Während die explizite Umwandlung dies automatisch erledigt, müssen Sie in anderen Situationen möglicherweisertrim
manuell verwenden. Erfahren Sie mehr überrtrim
in der Snowflake RTRIM-Dokumentation.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com
SSC-FDM-PG0003¶
Beschreibung¶
Diese Warnung weist darauf hin, dass die Konvertierung von Daten vom aus dem bytea-Format in das Binärformat die maximale Größenbeschränkung erheblich reduziert, nämlich von 1 Gigabyte (GB) auf 8 Megabyte (MB).
Codebeispiel¶
Eingabecode:¶
CREATE TABLE tbl(
col BYTEA
);
Generierter Code:¶
CREATE TABLE tbl (
col BINARY /*** SSC-FDM-PG0003 - BYTEA CONVERTED TO BINARY. SIZE LIMIT REDUCED FROM 1GB TO 8MB ***/
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
Best Practices¶
Weitere Einzelheiten finden Sie in der Snowflake-Dokumentation zum Binärdatentyp.
Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com.
SSC-FDM-PG0004¶
Beschreibung¶
Das Format der Datumsausgabe hängt von zwei Faktoren ab: dem Zeitstempeltyp und der Einstellung für timestamp_output_format. Weitere Einzelheiten entnehmen Sie bitte der Snowflake-Dokumentation.
Codebeispiel¶
Eingabecode:¶
CREATE TABLE table1 (
dt_update timestamp without time zone DEFAULT clock_timestamp()
);
Generierter Code:¶
CREATE TABLE table1 (
dt_update TIMESTAMP_NTZ DEFAULT CAST(
--** SSC-FDM-PG0004 - THE DATE OUTPUT FORMAT MAY VARY DEPENDING ON THE TIMESTAMP TYPE AND THE TIMESTAMP_OUTPUT_FORMAT BEING USED. **
CURRENT_TIMESTAMP() AS TIMESTAMP_NTZ)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "postgresql", "convertedOn": "09/17/2024" }}';
Beispiele¶
Tabellen erstellen: Ein grundlegendes Beispiel
Dieses Beispiel zeigt Ihnen, wie Sie eine Tabelle in Ihrer Datenbank erstellen.
Eingabecode:¶
CREATE TABLE sample2 (
platform_id integer NOT NULL,
dt_update timestamp with time zone DEFAULT clock_timestamp()
);
insert into postgres.public.sample2 (platform_id) values (1);
select *, clock_timestamp() from postgres.public.sample2;
platform_id|dt_update |clock_timestamp |
-----------+-----------------------------+-----------------------------+
1|2023-02-05 22:47:34.275 -0600|2023-02-05 23:16:15.754 -0600|
Generierter Code:¶
CREATE TABLE sample2 (
platform_id integer NOT NULL,
dt_update TIMESTAMP_TZ DEFAULT CAST(
--** SSC-FDM-PG0004 - THE DATE OUTPUT FORMAT MAY VARY DEPENDING ON THE TIMESTAMP TYPE AND THE TIMESTAMP_OUTPUT_FORMAT BEING USED. **
CURRENT_TIMESTAMP() AS TIMESTAMP_TZ)
);
insert into postgres.public.sample2 (platform_id) values (1);
ALTER SESSION SET timestamp_output_format = 'YYYY-MM-DD HH24:MI:SS.FF';
select *,
CURRENT_TIMESTAMP(3)
from
postgres.public.sample2;
PLATFORM_ID DT_UPDATE CURRENT_TIMESTAMP(3)
1 2023-02-05 20:52:30.082000000 2023-02-05 21:20:31.593
Verwendung von SELECT mit clock_timestamp() – Beispiel
Eingabecode¶
select clock_timestamp();
clock_timestamp |
-----------------------+
2023-02-05 23:24:13.740|
Ausgabecode¶
ALTER SESSION SET timestamp_output_format = 'YYYY-MM-DD HH24:MI:SS.FF';
select
CURRENT_TIMESTAMP(3);
CURRENT_TIMESTAMP(3)
2023-02-05 21:29:24.258
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0006¶
Beschreibung¶
Das Festlegen mehrerer Schemas in einem Suchpfad wird in Snowflake nicht unterstützt. Weitere Informationen zur Verwendung von Schemas finden Sie in der Snowflake-Dokumentation.
Codebeispiel¶
Eingabecode:¶
SET SEARCH_PATH TO schema1, schema2, schema3;
Generierter Code:¶
--** SSC-FDM-PG0006 - SET SEARCH PATH WITH MULTIPLE SCHEMAS IS NOT SUPPORTED IN SNOWFLAKE **
USE SCHEMA schema1 /*, schema2, schema3*/;
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0007¶
Schweregrad¶
Niedrig
Beschreibung¶
Um einen Kommentar in PostgreSQL zu entfernen, verwenden Sie NULL
. In Snowflake sollten Sie jedoch stattdessen eine leere Zeichenfolge (
) verwenden. Beide Methoden führen zu demselben Ergebnis, nämlich der Entfernung des Kommentars.
Codebeispiel¶
Eingabecode:¶
COMMENT ON TABLE mytable IS NULL;
Generierter Code:¶
COMMENT ON TABLE mytable IS '' /*** SSC-FDM-PG0007 - NULL IS CONVERTED TO '' AND MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/;
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0008¶
Beschreibung¶
Die Anweisung SELECT INTO
ist in Snowflake nicht verfügbar. Stattdessen können Sie CREATE TABLE AS
verwenden, um eine ähnliche Funktionalität zu erreichen. Darüber hinaus verwaltet Snowflake automatisch Transaktionsprotokolle für alle Tabellen, um die Integrität der Daten und die Wiederherstellungsmöglichkeiten zu gewährleisten. Aus diesem Grund werden Tabellen mit der Option UNLOGGED
in Snowflake nicht unterstützt.
Codebeispiel¶
Eingabecode:¶
select column1
into UNLOGGED NewTable
from oldTable;
Ausgabecode:¶
CREATE TABLE IF NOT EXISTS NewTable AS
select column1
-- --** SSC-FDM-PG0008 - SELECT INTO UNLOGGED TABLES ARE NOT SUPPORTED BY SNOWFLAKE. **
-- into UNLOGGED NewTable
from
oldTable;
Best Practices¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0009¶
Beschreibung¶
Die Sequenznummern von Snowflake können Lücken aufweisen. Die Zahlen werden zwar immer größer (oder kleiner, wenn Sie eine negative Schrittgröße verwenden), aber sie sind nicht unbedingt aufeinanderfolgend.
Codebeispiel¶
Eingabecode:¶
SELECT nextval('seq1');
Ausgabecode:¶
SELECT seq1.nextval /*** SSC-FDM-PG0009 - THE SEQUENCE NEXTVAL PROPERTY SNOWFLAKE DOES NOT GUARANTEE GENERATING SEQUENCE NUMBERS WITHOUT GAPS. ***/;
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0010¶
Beschreibung¶
Die PostgreSQL-Operatoren für die bitweise Verschiebung <<
und >>
werden in die Snowflake-Funktionen BITSHIFTLEFT
und BITSHIFTRIGHT
übersetzt. Bitte beachten Sie, dass diese Funktionen in Snowflake aufgrund von Unterschieden in der Behandlung von Ausdrücken andere Ergebnisse liefern können als in PostgreSQL.
Codebeispiel¶
Eingabecode:¶
SELECT 1 << 127 AS resultShiftedLeft, 16 >> 32 AS resultShiftedRight;
resultShiftedLeft |
resultShiftedRight |
---|---|
-2147483648 |
16 |
Ausgabecode:¶
SELECT
--** SSC-FDM-PG0010 - RESULTS MAY VARY DUE TO THE BEHAVIOR OF SNOWFLAKE'S BITSHIFTLEFT BITWISE FUNCTION **
BITSHIFTLEFT( 1, 127) AS resultShiftedLeft,
--** SSC-FDM-PG0010 - RESULTS MAY VARY DUE TO THE BEHAVIOR OF SNOWFLAKE'S BITSHIFTRIGHT BITWISE FUNCTION **
BITSHIFTRIGHT( 16, 32) AS resultShiftedRight;
resultShiftedLeft |
resultShiftedRight |
---|---|
-170141183460469231731687303715884105728 |
0 |
Empfehlungen¶
Wenn Sie zusätzliche Unterstützung benötigen, kontaktieren Sie uns bitte unter snowconvert-support@snowflake.com
SSC-FDM-PG0011¶
Beschreibung¶
Diese Meldung erscheint, wenn der Musterabgleich COLLATE-Angaben in seinen Argumenten enthält. Da die Funktion für reguläre Ausdrücke von Snowflake keine COLLATE-Angaben unterstützt, muss die COLLATE-Klausel entfernt werden. Bitte beachten Sie, dass das Entfernen dieser Klausel zu anderen Ergebnissen als in der Quelldatenbank führen kann.
Codebeispiel¶
Eingabecode:¶
CREATE TABLE collateTable (
col1 VARCHAR(20) COLLATE CASE_INSENSITIVE,
col2 VARCHAR(30) COLLATE CASE_SENSITIVE);
INSERT INTO collateTable values ('HELLO WORLD!', 'HELLO WORLD!');
SELECT
col1 SIMILAR TO 'Hello%' as ci,
col2 SIMILAR TO 'Hello%' as cs
FROM collateTable;
CI |
CS |
---|---|
TRUE |
FALSE |
Ausgabecode:
CREATE TABLE collateTable (
col1 VARCHAR(20) COLLATE 'en-ci',
col2 VARCHAR(30) COLLATE 'en-cs'
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "redshift", "convertedOn": "01/16/2025", "domain": "test" }}';
INSERT INTO collateTable
values ('HELLO WORLD!', 'HELLO WORLD!');
SELECT
RLIKE(COLLATE(
--** SSC-FDM-PG0011 - THE USE OF THE COLLATE COLUMN CONSTRAINT HAS BEEN DISABLED FOR THIS PATTERN-MATCHING CONDITION. **
col1, ''), 'Hello.*', 's') as ci,
RLIKE(COLLATE(
--** SSC-FDM-PG0011 - THE USE OF THE COLLATE COLUMN CONSTRAINT HAS BEEN DISABLED FOR THIS PATTERN-MATCHING CONDITION. **
col2, ''), 'Hello.*', 's') as cs
FROM
collateTable;
CI |
CS |
---|---|
FALSE |
FALSE |
Empfehlungen¶
Um in diesen Szenarien funktionale Gleichwertigkeit zu erreichen, können Sie diese Parameter manuell zur Funktion hinzufügen:
| Parameter | Description |
| ——— | ————————- |
| c
| Case-sensitive matching |
| i
| Case-insensitive matching |
Weitere Einzelheiten finden Sie unter diesem Link.
Wenn Sie Unterstützung benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com.
SSC-FDM-PG0012¶
Beschreibung¶
Wenn eine Variable in Redshift mit NOT NULL markiert ist, führt der Versuch, einen Nullwert zuzuweisen, zu einem Laufzeitfehler. Snowflake unterstützt diese Einschränkung jedoch nicht. Während des Migrationsprozesses wird die NOT NULL-Klausel entfernt, was bedeutet, dass die Zuweisung von NULL-Werten zu Variablen erlaubt ist und während der Ausführung keine Fehler erzeugt.
Codebeispiel¶
Eingabecode:¶
CREATE OR REPLACE PROCEDURE variable_Not_Null()
LANGUAGE plpgsql
AS $$
DECLARE
v_notnull VARCHAR NOT NULL DEFAULT 'Test default';
BEGIN
v_notnull := NULL;
-- Procedure logic
END;
$$;
[22004] ERROR: Der Variablen „v_notnull“ kann kein NULL-Wert zugewiesen werden, da sie mit einer NOT NULL-Einschränkung deklariert wurde.
Ausgabecode:¶
CREATE OR REPLACE PROCEDURE variable_Not_Null ()
RETURNS VARCHAR
LANGUAGE SQL
AS $$
DECLARE
--** SSC-FDM-PG0012 - NOT NULL CONSTRAINT HAS BEEN REMOVED. ASSIGNING NULL TO THIS VARIABLE WILL NO LONGER CAUSE A FAILURE. **
v_notnull VARCHAR DEFAULT 'Test default';
BEGIN
v_notnull := NULL;
-- Procedure logic
END;
$$;
Diese Operation wird in Snowflake erfolgreich ausgeführt.
Recommendations
Überprüfen Sie, ob die Logik der Prozedur verhindert, dass dieser Variablen ein
NULL
-Wert zugewiesen wird.Wenn Sie weitere Hilfe benötigen, kontaktieren Sie uns unter snowconvert-support@snowflake.com