PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Cláusula SQL Between com colunas de strings


A expressão
name between 'A' and 'B'

é equivalente a
name>='A' and name<='B'

Então 'Argentina' é>='A' e <='B' e satisfaz a condição. Mas 'Bolívia' NÃO é <='B'. 'Bolívia'>'B'. Ele não olha apenas para a primeira letra:ele olha para a string inteira. O que certamente é como deveria ser:se não fizesse isso, não haveria como dizer que você queria um intervalo que incluísse 'Smith', mas não 'Smithers'.

Para realizar o que você quer, você poderia dizer:
substr(name,1,1) between 'A' and 'B'

ou:
name like 'A%' or name like 'B%'

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