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.

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!













