选择声明

时间:2016-07-14 09:02:57

标签: mysql sql database

这个

有什么不对
DECLARE @sql varchar(max) = 'SELECT ' + 'word' + ' FROM #Parameter'+ ' WHERE ' + 'Name' + '= ' + 'word search';
EXEC @sql

原始选择是

 SELECT word FROM #Parameter WHERE Name = 'word search' 

2 个答案:

答案 0 :(得分:1)

您可以尝试转义短语word search周围的单引号:

DECLARE @sql varchar(max) = "SELECT " + "word" + " FROM #Parameter"+ " WHERE " +
                            "Name" + "= " + "'word search'";
EXEC @sql

<强>更新

出于某种原因,很可能是粗心大意,你用MySQL标记了你的问题。在SQL Server中,您可以通过加倍来转义单引号,因此这应该有效:

DECLARE @sql varchar(max) = 'SELECT ' + 'word' + ' FROM #Parameter'+ ' WHERE ' +
                            'Name' + '= ' + '''word search''';
EXEC @sql

答案 1 :(得分:0)

基于this comment,我为 SQL Server编写查询

在您添加单引号的情况下,您需要在关键字周围添加三重单引号:

DECLARE @sql VARCHAR(MAX) = 'SELECT ' + 'word' + ' FROM #Parameter' + ' WHERE ' +
                            'Name' + ' = ' + '''word search''';
--PRINT @sql
EXEC @sql

或者使用连接运算符,您可以在关键字周围使用两个单引号:

DECLARE @sql VARCHAR(MAX) = 'SELECT word FROM #Parameter WHERE Name = ''word search''';
--PRINT @sql
EXEC @sql