12
votes

Comment utiliser des citations unique dans une instruction SQL transact

Je veux utiliser des citations simples dans une instruction SQL transact, puis exécutez cette instruction.

Par exemple, ma requête est la suivante: xxx

maintenant je veux utiliser comme ceci: xxx

Ce ne fonctionne pas, et cette erreur s'est produite:

Nom de colonne invalide '1'

Je sais que le problème est des citations à gauche et à droite du 1

Il s'agit d'un échantillon et je souhaite utiliser de cette manière à une grande requête

de Cours, je veux utiliser une variable locale à la place par exemple '1' et ma variable locale est Varchar

aucune idée?


0 commentaires

6 Réponses :


4
votes

Utilisez des tiques doubles pour les échapper:

Declare @SQLQuery AS NVarchar(4000)
Declare @Id AS NVarchar(3)

SET @Id = '1'
SET @SQLQuery = ' Select * FROM MyTable WHERE MyTable.Id= ''' + @Id  + ''''
Execute (@SQLQuery)


1 commentaires

J'ai utilisé de cette façon, mais pas travaillé, et aucun enregistrement n'est retourné



5
votes

Doubler les guillemets simples dans la citation! XXX


0 commentaires

22
votes

Il suffit d'échapper aux citations:

Changer xxx

à xxx

** EDIT **

Pour inclure une variable locale Dans le résultat, vous pouvez mettre à jour votre requête comme celle-ci: xxx


3 commentaires

Merci, ce travail pour la valeur '1', mais lorsque j'utilise une variable locale (par exemple @ID), aucun enregistrement n'est retourné. Comme ceci: 'Sélectionnez * de MyTable où MyTable.Id =' '+ @ID +' ''. Bien sûr, ma variable est Varchar


Cela aurait été préférable de préciser que vous souhaitiez utiliser une variable locale dans votre question initiale.


Mise à jour de la réponse - Il suffit de convertir votre variable pour vous assurer que vous traitez avec les types corrects. Vous voudrez probablement aussi regarder en utilisant des paramètres plutôt que dynamiques SQL.



2
votes

Enveloppez la citation unique en plus similaire à '' ' et les tics vont également fonctionner.


0 commentaires

-1
votes

Essayez d'utiliser des guillemets à la place:

SET @SQLQuery = "Select * FROM MyTable WHERE MyTable.Id = '" + @Id + "'"


1 commentaires

Double-citations ne fonctionne pas pour créer des déclarations en T-SQL et le caractère autorisé est une citation unique



1
votes

Pour créer un code plus lecteurs, j'utilise une variable pour la citation unique: xxx

/ flemming


0 commentaires