Tem pessoas tão pobres que só pensam em dinheiro! - Daniel Godri

Delphi - Aspas simples dentro de uma string

20 de Junho de 2011

Uma dúvida cruel para desenvolvedores iniciantes em delphi é "Como inserir aspas simples dentro de uma string", já que o delphi utiliza aspas simples para iniciar e terminar strings.

Procurando na internet encontrei várias formas de fazer isso. Para demonstrar vou resolver a seguinte string sql: "IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABELA' AND COLUMN_NAME = 'COLUNA') BEGIN ALTER TABLE TABELA DROP COLUMN COLUNA END".

Esta função SQL verifica se a coluna "COLUNA" existe na tabela "TABELA". Se existir, eu removo a coluna.

Delphi

1 - Três aspas simples

Este método é simples porém não aconselho utiliza-lo pois o seu código pode ficar meio embolado.

Ex.:

 sql := 'IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_NAME = '''TABELA''' AND COLUMN_NAME = '''COLUNA''') BEGIN ALTER 
TABLE TABELA DROP COLUMN COLUNA END';

2 - Concatenar com Chr(39)

Este método apenas concatena a string com o código ascii da aspas simples.

Ex.:

 sql := 'IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_NAME = '+Chr(39)+'TABELA'+Chr(39)+' AND COLUMN_NAME = 
'+Chr(39)+'COLUNA'+Chr(39)+') BEGIN ALTER TABLE TABELA DROP COLUMN 
COLUNA END';

3 - Função QuotedStr('string')

Esta função retorna a string desejada dentro de aspas simples. Então você simplesmente concatena sua string à esta função e pronto. Para mim é a forma mais simples de resolver o problema das aspas simples.

Ex.:

sql := 'IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_NAME = '+quotedstr('TABELA')+' AND COLUMN_NAME = 
'+quotedstr('COLUNA')+') BEGIN ALTER TABLE TABELA DROP COLUMN COLUNA 
END';

Estas 3 dicas funcionam normalmente mas, como eu avisei, preferi a regra 3 pois o código fica mais legível.

Se você conhece outra maneira ou tem algo a acrescentar à esta matéria, deixe seu comentário abaixo.

Até a próxima dica!




6 Comentários

Vinicius Belisário Vinicius Belisário disse... Valeu, salvou meu dia hoje! Data: 20/12/2011 15:59
Henrique Corrêa Henrique Corrêa disse... Valeu Vinícius,
Também já fui salvo por várias matérias de blog e é por isso mesmo que escrevo!!!
Forte Abraço
Data: 20/12/2011 16:21
Flavio Flavio disse... Parabens dicas importantes, e me ajudou muito. Data: 01/02/2012 16:24
Henrique Corrêa Henrique Corrêa disse... Obrigado Flávio,
Espero poder ajudar mais em outras postagens!
Forte Abraço
Data: 01/02/2012 17:40
Maycon Maycon disse... Simples e objetivo, parabens. Data: 07/04/2015 19:28
Marcelo Marcelo disse... Eu faria da seguinte maneira : sql := \'IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = \'; sql := sql + quotedstr(\'TABELA\'); sql := sql + \' AND COLUMN_NAME = \'; sql := sql + quotedstr(\'COLUNA\') ; sql := sql + \') BEGIN ALTER TABLE TABELA DROP COLUMN COLUNA END\'; Acho que fica bem mais legível. Data: 27/06/2017 11:12

Deixe seu comentário

Seu e-mail não será exibido.
Receba as Novidades

Para receber as últimas novidades e promoções do site, digite seu e-mail e clique em enviar.

Arquivo do Blog