2016-07-14 3 views
0

, что является неправильным с этимВыберите заявление

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

оригинала выберите в

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

ответ

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 
+0

, который не работает на сервере sql 2016! – Chis

+1

@Chis Почему вы отметили MySQL? –

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