E-Zine Exclusivo para o Whastapp

SQL – Entenda as diferenças entre aspas simples e duplas

sql SQL - Entenda as diferenças entre aspas simples e duplas
foto_ramos SQL - Entenda as diferenças entre aspas simples e duplas

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.
foto_ramos SQL - Entenda as diferenças entre aspas simples e duplas

Em SQL padrão só apóstrofes (aspas simples) são reconhecidos como delimitador de literais strings ou algum outro tipo de dado (acredito que para outros tipos seja específico e não padrão). Fornecedores específicos admitem o uso das aspas duplas para a mesma função, mas isso pode variar. Alguns exigem configuração. Exemplos que admitem o uso são MySQL, SQL Server e Oracle.

Alguns bancos de dados usam uma delas ou ambas para criar um alias de coluna, aí não precisa usar o AS. Mas é específico e não padrão. Melhor usar o padrão que é inambíguo. O padrão determina que o alias seja com aspas duplas. Ou sem elas. Todos os principais bancos aceitam o padrão, mesmo que precise configurar isso.

Todos os bancos SQL mainstream usam as aspas (duplas) para delimitar o nome de um identificador (nome de tabela, coluna, alias, etc.). Alguns permitem configurar como vai usar. Alguns usam o backtick (crase) para fazer isso. Outros usam os colchetes [] (SQL Server). O delimitador pode ser necessário quando há espaço no identificador ou usa uma palavra reservada. Pode variar de acordo com o fornecedor.

Configuração do MySQL:

SET GLOBAL SQL_MODE=ANSI_QUOTES

Configuração do SQL Server:

SET QUOTED_IDENTIFIER ON

Há casos, como o PostgreSQL, em que o uso das aspas duplas faz com que o nome do identificador considere a sensibilidade de caixa, o que não é normal do SQL. É bom ter certeza do que está fazendo e se é isso que deseja. O uso das aspas duplas são necessárias, junto com &U para escrever caracteres Unicode. Mas é melhor evitar o seu uso.

Lembre-se que o uso de delimitadores quase nunca são necessários para identificadores. Se a pessoa quiser, eles nunca são necessários. Pra mim os delimitadores só deveriam ser usados em literais. E se precisar usar no identificador mesmo, que seja uma exceção.

Tem que consultar a documentação específica de cada fornecedor ou fazer perguntas específicas aqui.

Não encontrei nada em documentação que faça os elementos literais string do operador IN serem escritos de uma forma ou outra. Eu conto com a documentação. A documentação diz que o ANSI deve usar aspas simples.

Opção

Um outro motivo para usar aspas simples no SQL é que é normal a consulta ser montada dentro de outra linguagem por strings que provavelmente estará delimitada pelas duplas, então é melhor evitar confusão. Se a linguagem usada costuma delimitar strings com a simples, então é melhor usar a dupla no SQL.

Escolha uma forma de uso e fique com ela. Não fique trocando sem motivos. Só o faça se tiver um bom motivo para fazer exceção. Faça se houver motivos que atrapalhem o SQL do fornecedor que estiver usando ou a linguagem hospedeira da montagem da consulta.

Note que o padrão do SQL são as aspas simples. E o padrão de todas as linguagens mainstream que eu conheço são as aspas duplas, ainda que possa, e alguns prefiram, usar as simples nessas linguagens. Eu particularmente adoto esse padrão porque ele funciona bem em mais de 99% dos casos. O padrão contrário funciona bem em bem menos casos, dependendo do banco de dados, algo até próximo de 99%, mas há casos que praticamente não funciona. Vai que um dia precise adaptar o código para outro banco…

Top
%d blogueiros gostam disto: