2011-10-12 35 views
10

Me preguntaba si existe una forma de almacenar comillas simples en SQL Server 2008. Estoy creando varios informes y todos estos informes son exactamente iguales, excepto que solo difieren en los códigos que estoy seleccionando. Por ejemplo, un informe utiliza los códigos 'abc', 'def', 'ghi' y otro informe utiliza los códigos 'jkl', 'mno', 'pqr'. Estaba pensando en reducir el número de procedimientos almacenados que tendré que hacer, podría hacer un parámetro en el informe para elegir qué tipo de informe ejecutar. Basado en eso, usaría los códigos correctos. Así que iba a almacenar estos códigos en una variable varchar. A continuación se muestra la funcionalidad que estaba esperando:Almacenamiento de comillas simples en variable varchar SQL Server 2008

DECLARE @codes1 varchar, @codes2 varchar 
SET @codes1 = ''abc', 'def', 'ghi'' 
SET @codes2 = ''jkl', 'mno', 'pqr'' 

Entonces, yo iba a utilizar la variable varchar adecuada en función del parámetro que el usuario elija. El único problema es establecer las variables, ya que la cadena tendrá comillas simples (la cadena se usará en una instrucción SQL 'IN', esa es la razón por la que las comillas simples están presentes).

Respuesta

18

Me gusta. Sí Oded es correcto. La terminología adecuada para esto es 'escapar'. Puede escapar una comilla simple ' doblando hacia arriba ''

DECLARE @codes1 varchar(50), @codes2 varchar(50) 
SET @codes1 = '''abc'', ''def'', ''ghi''' 
SET @codes2 = '''jkl'', ''mno'', ''pqr''' 
+1

Aka, escape the single ''' duplicándolo '' ''. – Oded

+2

También necesitaría una longitud en las declaraciones de variables para evitar el truncamiento en 1 carácter. –

+0

Gracias! Esto es exactamente lo que necesitaba! Además, ¡gracias @Martin por el comentario adicional! ¡Necesitaba esto también! –

0

Trate de evitar valores difíciles de codificación. Cree una tabla para contener estos valores junto con una forma de agruparlos.

Table CodeGroups 
GroupNumber | Codes 
     1 | abc 
     1 | def 
     1 | ghi 
     2 | kkl 
     2 | mno 
     2 | pqr 

De esta manera el usuario sólo tiene que seleccionar GroupNumber = 1

vincular la tabla CodeGroups a la mesa con las cadenas de código. Todo lo que tiene que hacer para agregar otro código es hacer una entrada en esta tabla y darle un número de grupo.

0

Evite el problema de un solo problema simplemente duplicándolo.

Value Varchar2 (10): = '' abc ''; --- Obtendrás un error.

Valor Varchare (10): = '' 'abc' ''; --- Resolverá tu problema.

0
      int varId = "1"; 
          String varItem = "Google's root"; 

          String strSQL = "INSERT INTO table(" 
              + "id," 
              + "item" 
              +")" 
              + "VALUES('" + varId 
              + "', '" + varItem 
              + "')"; 
+0

El OP mencionado utilizando SQL Server 2008: ¿su solución está pensada para funcionar con SQL Server 2008? Además, le corresponde proporcionar una explicación de su solución arriba. –

Cuestiones relacionadas