SIMILAR TO - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SIMILAR TO

L’opérateur SIMILAR TO met en correspondance une expression de chaîne, comme un nom de colonne, avec un modèle d’expression régulière SQL standard. Un modèle d’expression régulière SQL peut inclure un ensemble de méta-caractères de correspondance de modèle, y compris les deux pris en charge par l’opérateur LIKE.

L’opérateur SIMILAR TO retourne true uniquement si son modèle correspond à l’ensemble de la chaîne, à la différence du comportement de l’expression régulière POSIX, où le modèle peut correspondre à n’importe quelle partie de la chaîne.

SIMILAR TO effectue une correspondance sensible à la casse.

Note

La correspondance d’expression régulière à l’aide de SIMILAR TO est coûteuse en termes de calcul. Nous vous conseillons d’utiliser LIKE autant que possible, notamment lors du traitement d’un très grand nombre de lignes. Par exemple, les requêtes suivantes sont fonctionnellement identiques, mais la requête qui utilise LIKE s’exécute infiniment plus vite que la requête qui utilise une expression régulière :

select count(*) from event where eventname SIMILAR TO '%(Ring|Die)%'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';

Syntaxe

expression [ NOT ] SIMILAR TO pattern [ ESCAPE 'escape_char' ]

Arguments

expression

Expression de caractère UTF-8 valide, comme un nom de colonne.

SIMILAR TO

SIMILAR TO effectue une correspondance sensible à la casse pour toute la chaîne de l’expression.

pattern

Expression de caractères UTF-8 valide représentant un modèle d’expression régulière SQL standard.

escape_char

Expression de caractères qui utilise une séquence d’échappement pour les méta-caractères du modèle. La valeur par défaut est deux barres obliques inverses (’\\ »).

Si pattern ne contient pas de méta-caractères, le modèle représente uniquement la chaîne elle-même.

Les expressions de caractère peuvent avoir CHAR ou VARCHAR comme type de données. En cas de différence, Amazon Redshift convertit pattern au type de données de l’expression.

SIMILAR TO prend en charge les méta-caractères de correspondance de modèle suivants :

Opérateur Description
% Met en correspondance une séquence de zéro ou plusieurs caractères.
_ Met en correspondance un seul caractère.
| Indique une alternative (l’une ou l’autre des deux possibilités).
* Répétez l’élément précédent zéro ou plusieurs fois.
+ Répétez l’élément précédent une ou plusieurs fois.
? Répétez l’élément précédent zéro ou une fois.
{m} Répétez l’élément précédent exactement m fois.
{m,} Répétez l’élément précédent m ou plusieurs fois.
{m,n} Répétez l’élément précédent au moins m fois et pas plus de n fois.
() Placez entre parenthèses les éléments d’un groupe sous forme d’un seul élément logique.
[...] Une expression entre crochets spécifie une classe de caractères, comme dans les expressions régulières POSIX.

Exemples

Le tableau suivant illustre des exemples de correspondance de modèle à l’aide de SIMILAR TO :

Expression Renvoie
'abc' SIMILAR TO 'abc' True
'abc' SIMILAR TO '_b_' True
'abc' SIMILAR TO '_A_' False
'abc' SIMILAR TO '%(b|d)%' True
'abc' SIMILAR TO '(b|c)%' False
'AbcAbcdefgefg12efgefg12' SIMILAR TO '((Ab)?c)+d((efg)+(12))+' True
'aaaaaab11111xy' SIMILAR TO 'a{6}_ [0-9]{5}(x|y){2}' True
'$0.87' SIMILAR TO '$[0-9]+(.[0-9][0-9])?' True

L’exemple suivant recherche toutes les villes dont le nom contient « E » ou « H » :

SELECT DISTINCT city FROM users WHERE city SIMILAR TO '%E%|%H%' ORDER BY city LIMIT 5; city ----------------- Agoura Hills Auburn Hills Benton Harbor Beverly Hills Chicago Heights

L’exemple suivant utilise la chaîne d’échappement par défaut (« \\ ») pour rechercher les chaînes qui incluent « _ » :

SELECT tablename, "column" FROM pg_table_def WHERE "column" SIMILAR TO '%start\\_%' ORDER BY tablename, "column" LIMIT 5; tablename | column --------------------------+--------------------- stcs_abort_idle | idle_start_time stcs_abort_idle | txn_start_time stcs_analyze_compression | start_time stcs_auto_worker_levels | start_level stcs_auto_worker_levels | start_wlm_occupancy

Les exemples suivants spécifient « ^ » comme caractère d’échappement, puis utilise le caractère d’échappement pour rechercher des chaînes qui incluent « _ » :

SELECT tablename, "column" FROM pg_table_def WHERE "column" SIMILAR TO '%start^_%' ESCAPE '^' ORDER BY tablename, "column" LIMIT 5; tablename | column --------------------------+--------------------- stcs_abort_idle | idle_start_time stcs_abort_idle | txn_start_time stcs_analyze_compression | start_time stcs_auto_worker_levels | start_level stcs_auto_worker_levels | start_wlm_occupancy