Queria saber se é possível selecionar algo que tenha mais / menos que x caracteres no SQL.
Por exemplo, eu tenho uma tabela de funcionários e quero mostrar todos os nomes de funcionários que tenham mais de 4 caracteres em seus nomes.
Aqui está um exemplo de tabela
ID EmpName Dept
1 Johnny ACC
2 Dan IT
3 Amriel PR
4 Amy HR
AND
declaraçãoSELECT city FROM student.zipcode WHERE LENGTH(city) >= 4 AND LENGTH(city) <= 9;
JonH cobriu muito bem a parte de como escrever a consulta. Há outro problema significativo que também deve ser mencionado, no entanto, que são as características de desempenho de tal consulta. Vamos repetir aqui (adaptado para Oracle):
Esta consulta está restringindo o resultado de uma função aplicada a um valor de coluna (o resultado da aplicação da
LENGTH
função àEmployeeName
coluna). No Oracle, e provavelmente em todos os outros RDBMSs, isso significa que um índice regular em EmployeeName será inútil para responder a essa consulta; o banco de dados fará uma varredura completa da tabela, o que pode ser muito caro.No entanto, vários bancos de dados oferecem um recurso de índices de função projetado para acelerar consultas como essa. Por exemplo, no Oracle, você pode criar um índice como este:
Isso ainda pode não ajudar no seu caso, porque o índice pode não ser muito seletivo para a sua condição. Com isso, quero dizer o seguinte: você está pedindo linhas em que o comprimento do nome seja maior do que 4. Vamos supor que 80% dos nomes dos funcionários nessa tabela sejam maiores do que 4. Bem, então o banco de dados provavelmente será concluído ( corretamente) que não vale a pena usar o índice, porque provavelmente terá que ler a maioria dos blocos na tabela de qualquer maneira.
No entanto, se você alterou a consulta para dizer
LENGTH(EmployeeName) <= 4
ouLENGTH(EmployeeName) > 35
, presumindo que muito poucos funcionários têm nomes com menos de 5 caracteres ou mais de 35, o índice seria escolhido e melhoraria o desempenho.Enfim, resumindo: tome cuidado com as características de desempenho de consultas como a que você está tentando escrever.
fonte
Hoje tentei mesmo no db2 e usei abaixo, no meu caso tinha espaços no final dos dados da coluna varchar
fonte
Se estiver tendo o mesmo problema ao consultar um banco de dados DB2, você precisará usar a consulta abaixo.
fonte