Fonction COLLATE - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

Fonction COLLATE

La fonction COLLATE remplace le classement d’une colonne ou d’une expression de chaîne.

Pour plus d'informations sur la création de tables à l'aide du classement de bases de données, consultez CREATE TABLE.

Pour plus d'informations sur la création de bases de données à l'aide du classement de bases de données, consultez CREATE DATABASE.

Syntaxe

COLLATE( string, 'case_sensitive' | 'cs' | 'case_insensitive' | 'ci');

Arguments

chaîne

Colonne de chaîne ou expression que vous voulez remplacer.

’case_sensitive’ | ’cs’ | ’case_insensitive’ | ’ci’

Constante de chaîne d’un nom de classement. Amazon Redshift prend uniquement en charge les valeurs suivantes pour ce paramètre :

  • case_sensitive

  • cs

  • case_insensitive

  • ci

case_sensitive et cs sont interchangeables et donnent les mêmes résultats. De même, case_insensitive et ci sont interchangeables et donnent les mêmes résultats.

Type de retour

La fonction COLLATE renvoie VARCHAR, CHAR ou SUPER en fonction du premier type d’expression en entrée. Cette fonction ne modifie que le classement du premier argument d’entrée et ne modifie pas sa valeur de sortie.

Exemples

Pour créer la table T et définir col1 dans la table T comme case_sensitive, utilisez l’exemple suivant.

CREATE TABLE T ( col1 Varchar(20) COLLATE case_sensitive ); INSERT INTO T VALUES ('john'),('JOHN');

Lorsque vous exécutez la première requête, Amazon Redshift renvoie uniquement john. Après l’exécution de la fonction COLLATE sur col1, le classement devient case_insensitive. La deuxième requête renvoie à la fois john et JOHN.

SELECT * FROM T WHERE col1 = 'john'; +------+ | col1 | +------+ | john | +------+ SELECT * FROM T WHERE COLLATE(col1, 'case_insensitive') = 'john'; +------+ | col1 | +------+ | john | | JOHN | +------+

Pour créer la table A et définir col1 dans la table A comme case_insensitive, utilisez l’exemple suivant.

CREATE TABLE A ( col1 Varchar(20) COLLATE case_insensitive ); INSERT INTO A VALUES ('john'),('JOHN');

Lorsque vous exécutez la première requête, Amazon Redshift renvoie à la fois john et JOHN. Après l’exécution de la fonction COLLATE sur col1, le classement devient case_sensitive. La deuxième requête renvoie uniquement john.

SELECT * FROM A WHERE col1 = 'john'; +------+ | col1 | +------+ | john | | JOHN | +------+ SELECT * FROM A WHERE COLLATE(col1, 'case_sensitive') = 'john'; +------+ | col1 | +------+ | john | +------+