【问题标题】:T-SQL: insert variable inside declared URLT-SQL:在声明的 URL 中插入变量
【发布时间】:2018-10-11 05:47:03
【问题描述】:

我有一个无法解决的简单问题。

如果您使用浏览器访问此 URL:

http://overpass-api.de/api/interpreter?data=[out:json];area[name="Auckland"]->.a;(node(area.a)[amenity=cinema];);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 + ',但在我的情况下不起作用。

为什么?

【问题讨论】:

  • 您的代码为我运行。请注意,SSMS 以红色突出显示字符串文字。这就是 IDE 的行为方式;这并不意味着有任何问题。
  • 代码没有问题,只是编辑器着色有问题
  • 请发表回复,我会将其标记为正确。天真地?这是我第一次看到 SSMS 的 IDE 出现问题。我不明白为什么?如果你知道为什么,请发布它。我敢肯定,我不是唯一为此浪费时间的人。谢谢
  • 实际上 SSMS 将网址标记为蓝色。
  • 不要忘记转义撇号等(对于 URL,而不是 SQL 语法)

标签: sql-server tsql variables ssms declare


【解决方案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) ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多