61 votes

SQLite Like% et _

Je ne peux pas comprendre ce que le caractère de soulignement fait dans une instruction SQLite like . Le caractère générique, % , est probablement le même que dans la plupart des autres bases de données SQL.

Alors, que fait ce foutu personnage _ ?

95voto

Benoit Points 35553

C'est le standard SQL qui en LIKE expressions:

  • % "correspond à toute chaîne, y compris la chaîne vide. Il est équivalent à .* dans une expression régulière.
  • _ correspond à un caractère unique. Il est équivalent à . dans une expression régulière.
  • Vous pouvez échapper %, _ et le caractère d'échappement lui-même avec un autre personnage de votre choix avec:

    SELECT * FROM T
     WHERE FOO LIKE 'a\_b_c\%de%' ESCAPE '\'
    

    qui va correspondre a_bdc%deFOO ou a_b_c%de mais pas aabbccde.

Par extension SQLite vous avez l' GLOB mot-clé qui se comporte exactement de la même manière, sauf qu' % devient * et _ devient ?.

68voto

mu is too short Points 205090

Le trait de soulignement est également la même que dans la plupart des autres bases de données SQL et correspond à tout caractère unique (c'est à dire qu'il est le même que . dans une expression régulière). À partir de la documentation:

Un trait de soulignement ("_") dans le motif correspond à un caractère dans la chaîne.

Par exemple:

-- The '_' matches the single 'c'
sqlite> select 'pancakes' like 'pan_akes';
1
-- This would need '__' to match the 'ca', only one '_' fails.
sqlite> select 'pancakes' like 'pan_kes';
0
-- '___' also fails, one too many '_'.
sqlite> select 'pancakes' like 'pan___kes';
0

Et juste pour s'assurer que les résultats font sens: SQLite utilise zéro et un pour les booléens.

-4voto

Arun Points 1853

_ est un espace réservé pour faire correspondre un ou zéro caractère.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X