2009/3/11 Rogério A Bassete <[email protected]>: > Pessoal, > > Tenho uma tabela com vários chassi´s de veículos, necessito selecionar a > seguinte faixa: > > Inicial: XYARJ071***000301 > Final: XYARJ071***039486 > > Chassis exemplos: > > "XYARJ07125A024039" > "XYARJ07146A056671" > "ZYARJ07146A056671" > "XYARJ07185A024045" > "QYARJ07146A056671" > > Elaborei a consulta abaixo, mas seria a melhor forma? Teria como fazer tudo > com ER? > > SELECT > * > FROM > veiculo > WHERE > SUBSTR(chassi,1,11) ~ 'XYARJ071...' AND > SUBSTR(chassi,12,6)::INTEGER BETWEEN 000301 AND 039486; > > Esta consulta retorna: > > "XYARJ07125A024039" > "XYARJ07185A024045" >
Sim, é possível fazer tudo com uma ER. Agora, vale a pena? A verificação de intervalos em uma ER não é muito simples. Por ex. para validarmos o dia de uma data (de 01 a 31) a expressão seria: 0[1-9]|[12][0-9]|3[01] Para o intervalo 00301 a 39486 a expressão seria bastante grande o que, em minha opinião, acabaria prejudicando a legibilidade de sua sentença SQL. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
