PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Clause SQL entre avec des colonnes de chaînes

L'expression

name between 'A' and 'B'

est équivalent à

name>='A' and name<='B'

Donc 'Argentine' est>='A' et <='B' et satisfait la condition. Mais 'Bolivie' n'est PAS <='B'. 'Bolivie'>'B'. Il ne regarde pas seulement la première lettre :il regarde toute la chaîne. Ce qui est sûrement la façon dont cela devrait être :si ce n'était pas le cas, il n'y aurait aucun moyen de dire que vous vouliez une gamme qui incluait "Smith" mais pas "Smithers".

Pour accomplir ce que vous voulez, vous pourriez dire :

substr(name,1,1) between 'A' and 'B'

ou :

name like 'A%' or name like 'B%'

ou :

name>='A' and name<'C'