1
我有一個需求,我需要在SQL表中選擇一列到兩個單獨的包含逗號分隔值的字段中 - 一個應該被引用,另一個應該不帶引號。例如,如果表的值在單個列中具有值abcde,那麼我的選擇SQL語句應該返回兩個字段 - 一個字段包含值'a','b','c','d', 'e',另一個包含值a,b,c,d,e。T-SQL中帶引號和不帶引號的逗號分隔列表
我運行下面的SQL語句來實現這一目標:
SELECT
SUBSTRING((SELECT TOP 100 ''',''' + CAST(sales_id AS NVARCHAR(50))
FROM sales_order_header
WHERE (status = 0)
ORDER BY updated_datetime, 1
FOR XML PATH('')),3,2147483647) + '''' AS quoted,
SUBSTRING((SELECT TOP 100 ',' + CAST(sales_id AS NVARCHAR(50))
FROM sales_order_header
WHERE (status = 0)
ORDER BY updated_datetime, 1
FOR XML PATH('')),2,2147483647) + '' AS unquoted
不過,我有一個場景,對結果「援引」和「不帶引號的」一欄是即使我運行相同的不同SUBSTRING函數中的「SELECT」語句。
什麼是實現我想要的最佳方式?
有沒有辦法編寫一個SQL語句,使其僅查詢表一次,並重復使用兩列的結果,而不是兩次運行「SELECT」語句。