J'essaie d'exécuter une requête dans SQL 2008 en faisant:
@query varchar(max) SET @query = 'SELECT * FROM Table WHERE [Name] = ' 'Karl' ' ' EXEC(@query)
7 Réponses :
faire comme ça Ensemble @query = 'Sélectionnez * à partir de la table où [Nom] =' '' 'Karl' '' '' '' P>
Cela ne fonctionnera pas, à moins que Karl ne soit stocké dans la base de données avec une citation unique avant et après son nom comme «Karl», car il se traduit par la requête réelle: Sélectionnez * à partir de la table où [Nom] = '' Karl ''
thne ajoutez une citation de plus à la fin Faites ce que ceci set @query = 'Sélectionnez * à partir de la table où [Nom] =' '' '' Karl '' '' '' comme ça
Évapez simplement les apostrophes en utilisant la barre d'échappement \ comme ceci 'Sélectionnez * à partir de la table où [Nom] =' \ 'Karl \' '' P>
espère qu'il aide p>
Ceci fonctionne sur ma machine à partir de SQL Server Management Studio:
@query varchar(max) SET @query = 'SELECT * FROM Table WHERE [Name] = ''''''Karl''''''' EXEC(@query)
Cela ne fonctionnera pas, à moins que Karl ne soit stocké dans la base de données avec deux guillemets simples avant et après son nom comme «Karl», car il en résulte la requête réelle: Sélectionnez * à partir de la table où [Nom] = '' Karl ' ''
Il existe de plusieurs façons que vous puissiez échapper à des données de caractères dans SQL Server, certaines personnes défoncent même l'utilisation du quotename () fonctions. p>
Si vous voulez vraiment développer une solide compréhension de ce domaine, puis-je vous recommander de jeter un oeil à ce que les développeurs de serveurs SQL expérimentés considèrent comme une lecture essentielle en ce qui concerne les différentes méthodes que vous pouvez utiliser pour intégrer dynamique t- SQL dans votre codage. P>
Essayez:
PRINT '''' --will print a one single quote PRINT '''''' --will print two single quotes PRINT 'can''t' --will print can't
Un double simple (''), une citation simple agira comme une seule citation unique lorsque vous êtes dans un littéral à chaîne.
Avez-vous essayé d'utiliser une variable? P>
declare @karl_name varchar(10); set @karl_name = '''Karl'''; SELECT * FROM Table WHERE [Name] = @karl_name
Ceci fonctionne: sortie: p> mais si "karl" est un texte variable, il est fortement recommandé d'utiliser quelque chose comme cela à la place: p>
C'est SQL Server 2008, non? Not MySQL ou PostgreSQL ou SQLite ou l'une des autres variantes de SQL?
Que voyez-vous si vous imprimez la chaîne @query?