SQL在每个逗号分隔处添加值
我对给出结果的sys.Columns进行了一些查询:SQL在每个逗号分隔处添加值,sql,sql-server,Sql,Sql Server,我对给出结果的sys.Columns进行了一些查询: DECLARE @queryRWordsSameType VARCHAR(500) ='[ItemCode],[ItemDesc],[ItemId],[ItemName]' 如何使每个逗号分隔的值如下所示: DECLARE @queryRWordsSameType VARCHAR(500) ='CAST([ItemCode] AS NVARCHAR(100)) AS [ItemCode] ,CAST([ItemDesc] AS NV
DECLARE @queryRWordsSameType VARCHAR(500) ='[ItemCode],[ItemDesc],[ItemId],[ItemName]'
如何使每个逗号分隔的值如下所示:
DECLARE @queryRWordsSameType VARCHAR(500) ='CAST([ItemCode] AS NVARCHAR(100)) AS [ItemCode]
,CAST([ItemDesc] AS NVARCHAR(100)) AS [ItemDesc]
,CAST([ItemId] AS NVARCHAR(100)) AS [ItemId]
,CAST([ItemName] AS NVARCHAR(100)) AS [ItemName]'
我想您正在选择sql表的所有列作为逗号分隔的列表,对吗 我们可以使用COALESCE函数来表示逗号分隔的值。关于列,请参见sys.columns和sys.tables定义 您可以使用此代码段
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',', '') + '[' + c.name + ']'
FROM sys.tables t
INNER JOIN sys.columns c
ON c.object_id = t.object_id
WHERE t.name = '<Your Table>'
SELECT @listStr
DECLARE@listStr VARCHAR(最大值)
选择@listStr=COALESCE(@listStr+',','')+'['+c.name+']'
从sys.t表
内部联接系统c列
在c.object\u id=t.object\u id上
其中t.name=“”
选择@listStr
在这里(尽管这是直接从syscolumns构建整个字符串):
DECLARE@querywordssametype VARCHAR(500)=”
选择@queryRWordsSameType+=CASE,当@queryRWordsSameType“”然后,“'ELSE”“END+'将(['+name+']转换为NVARCHAR(100))转换为['+name+']'+CHAR(13)+CHAR(10)时
从系统列
其中id=object\u id('YOUR\u TABLE\u NAME')
打印@queryRWordsSameType
您可以添加对sys.Columns的查询吗?对不起,我不太明白你需要做什么。您能解释得更清楚一点吗?您想在该列中插入(添加)值还是从该列中选择(提取)值?
DECLARE @queryRWordsSameType VARCHAR(500) = ''
SELECT @queryRWordsSameType += CASE WHEN @queryRWordsSameType <> '' THEN ',' ELSE '' END + 'CAST([' + name + '] AS NVARCHAR(100)) AS [' + name + ']' + CHAR(13) + CHAR(10)
FROM syscolumns
WHERE id = object_id('YOUR_TABLE_NAME')
PRINT @queryRWordsSameType