Ok pessoal, fiz alguns testes é assim mesmo que se comporta, o compilador nesse caso (AND) não faz a outra comparação, se aprimeira retorna false a segunda não é executada. Obrigado a todos;
Ola Irineu, Em um WHERE a ordem de execução é do final do comando para o inicío, nesse seu caso a primeira condição a ser executada seria CAST(nome AS INTEGER) = 0 e depois cod = 2, em clausulas WHERE deixo as mais restritivas no final do comando, não sei se é uma regra mas o Oracle também trabalha desta forma. > From: "Irineu Raymundo" <[email protected]> > Subject: [pgbr-geral] RES: Comando IF > To: "'Comunidade PostgreSQL Brasileira'" > <[email protected]> > Message-ID: <[email protected]> > Content-Type: text/plain; charset="iso-8859-1" > > Pode-se dizer que tmb nas condicoes WHERE de um SQL ele se comporta igual? > > CREATE TABLE teste (cod INTEGER, nome VARCHAR(10)); > INSERT INTO teste VALUES(1,'teste'); > SELECT * FROM teste WHERE cod = 2 AND CAST(nome AS INTEGER) = 0; > > Sds, > Irineu. > > > > -----Mensagem original----- > > De: [email protected] [mailto:pgbr-geral- > > [email protected]] Em nome de Pedro Espíndola > > Enviada em: segunda-feira, 10 de maio de 2010 14:16 > > Para: Comunidade PostgreSQL Brasileira > > Assunto: Re: [pgbr-geral] Comando IF > > > > Os compiladores são inteligentes de forma a não gastar energia atoa, > > como trata-se de uma condição do tipo AND, em q todas as condições > > devem ser satisfeitas, com certeza a primeira condição não sendo > > satisfeita, o restante é desprezado não necessitando ser testado. > > > > Abs > > Pedro > > > > 2010/5/10 Ricardo <[email protected]>: > > > Em 04/05/2010 13:29, rogeriogrando escreveu: > > >> Ola pessoal, estou com seguinte duvida, (Postgres 8.3.5). > > >> Tenho a seguinte restrição. > > >> > > >> IF ((x = 0) AND (y = 0)) AND (z = 0) THEN > > >> END IF; > > >> > > >> Se a primeira restrição ((x = 0) AND (y = 0)) não é satisfeita o > > banco mesmo assim faz a segunda (z = 0)? > > >> > > > Até onde eu sei o banco avalia todos os testes, independentemente, da > > > falha e algum dos testes. > > > _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
