Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL在每个逗号分隔处添加值_Sql_Sql Server - Fatal编程技术网

SQL在每个逗号分隔处添加值

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

我对给出结果的sys.Columns进行了一些查询:

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