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”语句。