2010-07-29 36 views
11

Tengo problemas para ejecutar una instrucción SQL de un proceso almacenado que tiene comillas simples. Aquí está mi consulta de un procedimiento almacenado que estoy ejecutando.Uso de comillas simples en una instrucción Exec en SQL

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT Replace('OSINGLEQUOTEJOHN DOE','SINGLEQUOTE','''')') 

Estoy tratando de actualizar la tabla "Mytable" columna "MICOLUMNA" con un valor "O'John Doe"

La consulta real es así, he intentado simplificarlo un poco más arriba en el ejemplo

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT Replace('+ @IntegrationGuardian2FullName +','SINGLEQUOTE','''')') 

El valor de @IntegrationGuardian2FullName es "OSINGLEQUOTEJOHN DOE". Espero que eso tenga más sentido.

¿Puede alguien ayudarme a formatear esta consulta?

Respuesta

17

uso:

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT REPLACE(''OSINGLEQUOTEJOHN DOE'', 
             ''SINGLEQUOTE'', 
             ''''''''))') 

Lo que ha proporcionado necesita dos comillas simples alrededor de la cadena, y qué reemplazar, y comillas simples adicionales debido a la comilla única de escape necesaria para SQL dinámico.

+0

Da una "sintaxis incorrecta cerca de ')'." error. – Mithil

+0

@Mithil Deshmukh: Lo siento, olvidé el último ")" - corregido, funciona para mí en SQL Server 2008 Express. –

+0

Muchas gracias, OMG Poines, que hizo el truco. – Mithil

1
UPDATE myTABLE SET myCOLUMN='O''John Doe' 

EXEC('UPDATE myTABLE SET myCOLUMN=''O''John Doe''') 
8

Usted debe hacer doble escapar la comilla simple dentro de la cadena entre comillas - a fin de utilizar dos comillas simples para envolver la cuerda, y cuatro (es decir, dos escaparon comillas) que será un-derramado en un par de sencillo comillas cuando se analiza la consulta, y luego un-escapado de nuevo en la comilla simple en realidad se desea insertar:

EXEC('UPDATE myTable SET myColumn = ''John''''O Doe''') 
+0

Gracias, Dylan, esto fue útil. – Mithil

2

Si bien la respuesta de OMG Ponies fue perfecta y me ayudó también, algo que no fue inmediatamente obvio para mí es cómo funcionó. Así es como entiendo, y puede ayudar a OP o cualquier otra persona que todavía esté buscando, a aplicar a cualquier situación.

Utilizando un ejemplo sencillo sp_change_users_login 'update_one', 'LName','Uname'

Transformado select (' sp_change_users_login ''update_one '', ''LName '' ,''Uname '' ')

Todo lo que se ha hecho es, as OMG Ponies said, envolver todo el enunciado entre comillas simples ('). Luego, para cada cita que ya está presente ('), coloque una más para precederla ('). No puedo poner en negrita las comillas simples que se agregaron en la segunda declaración, para que sean claramente visibles.

Cuestiones relacionadas