web-dev-qa-db-fra.com

Stockage de guillemets simples dans la variable varchar SQL Server 2008

Je me demandais s'il existe un moyen de stocker des guillemets simples dans SQL Server 2008. Je construis plusieurs rapports et tous ces rapports sont exactement les mêmes, sauf qu'ils ne diffèrent que par les codes que je sélectionne. Par exemple, un rapport utilise les codes "abc", "def", "ghi" et un autre utilise les codes "jkl", "mno", "pqr". Je pensais réduire le nombre de procédures stockées à créer. Je pourrais créer un paramètre dans le rapport pour choisir le type de rapport à exécuter. Sur la base de cela, je voudrais utiliser les codes corrects. J'allais donc stocker ces codes dans une variable varchar. Voici la fonctionnalité que j'espérais:

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

Ensuite, j'allais utiliser la variable varchar appropriée en fonction du paramètre choisi par l'utilisateur. Le seul problème est de définir les variables car la chaîne contiendra des guillemets simples (la chaîne sera utilisée dans une instruction SQL 'IN', c'est la raison pour laquelle les guillemets simples sont présents).

12
Eric R.

Comme ça. Oui, Oded est correct. La terminologie appropriée pour cela est "échapper". Vous pouvez échapper à un seul guillemet ' en le doublant ''

DECLARE @codes1 varchar(50), @codes2 varchar(50)
SET @codes1 = '''abc'', ''def'', ''ghi'''
SET @codes2 = '''jkl'', ''mno'', ''pqr'''
21
John Hartsock

Essayez d'éviter les valeurs codées en dur. Créez un tableau contenant ces valeurs et un moyen de les regrouper.

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

De cette façon, l'utilisateur n'a qu'à sélectionner GroupNumber = 1

Vous liez la table CodeGroups à la table avec les chaînes de code. Tout ce que vous avez à faire pour ajouter un autre code est de faire une entrée dans cette table et de lui donner un numéro de groupe.

0
JeffO

Évitez les problèmes de guillemets simples en les doublant.

Valeur Varchar2 (10): = '' abc ''; --- Vous obtiendrez une erreur.

Valeur Varchar (10): = '' 'abc' ''; --- va résoudre votre problème.

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

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