这是我的问题:
SELECT
sys.objects.object_id, sys.objects.name, sys.objects.type_desc,
sys.syscomments.text
FROM
sys.objects
LEFT JOIN
sys.syscomments ON sys.syscomments.id = sys.objects.object_id
WHERE
(type_desc LIKE 'SQL_STORED_PROCEDURE' OR type_desc LIKE 'SQL_SCALAR_FUNCTION')
ORDER BY
sys.objects.object_id;
以下是输出的一部分:
那么我如何连接具有相同'object_id'的行的'text'列,以便我没有重复的ID?如果没有字符串的聚合函数,在T-SQL中就不那么简单了......
我已经看过其他例子,但我似乎无法让它适用于我的场景。
答案 0 :(得分:1)
您需要创建一个连接函数:
SELECT
然后,执行SELECT dbo.[objects].[object_id], dbo.[objects].name, dbo.[objects].type_desc, dbo.GetTexts([object_id])
FROM dbo.[objects]
查询。
./server_start.sh --master spark://ip:7077 --deploy-mode cluster --conf spark.driver.cores=2 --conf spark.driver.memory=4g
P.S。:我不确定模式名称,因此请根据需要进行更正。
答案 1 :(得分:0)
执行连接聚合的For XML Path方法是您在此处执行此操作的更常用方法之一。
有关详细信息,请参阅this post。
您的情况的应用可能如下所示:
SELECT B.object_id, B.name, B.type_desc,
STUFF((SELECT A.[text]
FROM sys.syscomments AS A
WHERE A.id = B.[object_id]
FOR XML PATH('')), 1, 1, '' ) AS [text]
FROM
sys.objects AS B
WHERE type_desc LIKE 'SQL_STORED_PROCEDURE' OR type_desc LIKE 'SQL_SCALAR_FUNCTION'
ORDER BY B.[object_id];