T-SQL: вставить переменную внутри объявленного URL

У меня есть простая проблема, которую я не могу решить.

Если вы перейдете по этому URL-адресу в своем браузере:

http://overpass-api.de/api/interpreter?data=[out:json];area[name=%22Auckland%22]-%3E.a;(node(area.a)[удобства=кино];);out;

OSM возвращает для вас все кинотеатры Окленда в формате JSON.

Я хотел бы динамически запрашивать это через T-SQL, но прежде всего мне нужно выяснить, как вставить переменную названия города в URL-адрес:

DECLARE @place as NVARCHAR(30) SET @place = 'Auckland'

DECLARE @URL as VARCHAR(MAX) 
SET @URL = 'http://overpass-api.de/api/interpreter?data=[out:json];area[name="' + @place +'"]->.a;(node(area.a)[amenity=cinema];);out;';

Это объявление не работает, и SSMS выделяет его красным цветом:

введите здесь описание изображения

Не знаю, как выйти из этой проблемы.

Я следовал нескольким руководствам, но все они говорят использовать ' + @variable + ', но в моем случае это не работает.

Почему?


person Francesco Mantovani    schedule 11.10.2018    source источник
comment
Ваш код работает для меня. Обратите внимание, что SSMS выделяет строковые литералы красным цветом. Именно так ведет себя эта IDE; это не значит, что есть какие-то проблемы.   -  person Tim Biegeleisen    schedule 11.10.2018
comment
С кодом проблем нет, просто у редактора проблемы с раскраской   -  person Eralper    schedule 11.10.2018
comment
Пожалуйста, опубликуйте ответ, и я отмечу его как правильный. Серьезно? Я впервые вижу, как у SSMS возникают проблемы с IDE. Я не понимаю, почему? Если вы знаете, почему, пожалуйста, напишите об этом. Я уверен, что я не единственный, кто потратил на это время. Спасибо   -  person Francesco Mantovani    schedule 11.10.2018
comment
На самом деле SSMS помечает веб-адрес синим цветом.   -  person NP007    schedule 11.10.2018
comment
Не забудьте экранировать апострофы и тому подобное (для URL, а не для синтаксиса SQL)   -  person LoztInSpace    schedule 11.10.2018


Ответы (1)


Это просто синтаксическая окраска редактора. Вы можете настроить его в своей среде IDE.

Обратите внимание, что вы тоже можете это сделать:

DECLARE @place as VARCHAR(30) = 'Auckland'

DECLARE @URL as VARCHAR(MAX)=FORMATMESSAGE('http://overpass-api.de/api/interpreter?data=[out:json];area[name="%s"]->.a;(node(area.a)[amenity=cinema];);out;',@place) ;
person Esperento57    schedule 11.10.2018