Pergunta

Eu atualizei muitos registros já, mas quando se tratava de uma palavra que contém uma citação eu recebo este erro: "ERROR: Citação Unclosed @ 1357"

Eu sei porque ele está me dando esse erro, eu só não sei como resolvê-lo.

Aqui está um exemplo: ATUALIZAÇÃO invnum SET cAccountName = substituir (cAccountName, 'JOHN'S', 'Ben')

Agradecemos antecipadamente.

Foi útil?

Solução

Cotações de escape dentro de strings:

UPDATE invnum SET cAccountName = replace(cAccountName,'JOHN\'S','BEN')

Você quer ter muito cuidado com isso - não lidar com isso corretamente é a fonte de SQL ataques de injeção , e é uma importante fonte de problemas de segurança.

Outras dicas

Se você estiver usando um script para atualizar seus registros usar um builtin escapar função. para php que seria mysql_real_escape_string

Tente isto em vez disso:

UPDATE invnum SET cAccountName = replace(cAccountName,"JOHN'S","BEN")

Se você precisa usar ambos os tipos de citações dentro de uma cadeia, então você precisa para escapar do tipo de citações que você usar para cercar a string quando elas ocorrem dentro dele (caso contrário o intérprete SQL vai pensar as extremidades da corda antes dele realmente faz.

Por exemplo:

Johns   becomes "Johns"
John's  becomes "John's" or 'John\'s'
"John"  becomes '"John"' or "\"John\""

et cetera.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top