查询中包含链接的语法

时间:2017-03-10 23:02:11

标签: sql sql-server sql-server-2008-r2

我正在尝试找出此查询的正确语法

CASE WHEN SH10.SHIP_VIA_CODE1 IN ('01','02','03','05','42','44','46')
THEN '<a href="http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums='
     + RTRIM(LTRIM(CRC_VW_SH10_B.WAYBILL_NUMB))
     + '">CRC_VW_SH10_B.WAYBILL_NUMB</a>'
ELSE CRC_VW_SH10_B.WAYBILL_NUMB 
END  AS [{TrackingNumb}]

我要求链接中的CRC_VW_SH10_B.WAYBILL_NUMB不是字符串的一部分,但在尝试在结束标记之前放置单引号时,我一直收到错误。

1 个答案:

答案 0 :(得分:1)

我很确定,您的列WAYBILL_NUMB不是字符串类型,而是某种数字类型。您必须强制转换它才能使用+连接。

由于字符转义,在字符串基础上创建XML或(X)HTMML通常不是一个好主意。为此使用FOR XML要好得多:

THEN
(
    SELECT 'http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=' + RTRIM(LTRIM(CAST(CRC_VW_SH10_B.WAYBILL_NUMB AS VARCHAR(100)))) AS [a/@href]
          ,'CRC_VW_SH10_B.WAYBILL_NUMB' AS a FOR XML PATH(''),TYPE 
)