Sql server 游标从SQLServer2008上的每个表和字段中获取所有不同的值
我试图在SQLServer数据库上做一个游标,以从每个表中获取所有不同的值。 我希望具有值的表如下所示:Sql server 游标从SQLServer2008上的每个表和字段中获取所有不同的值,sql-server,sql-server-2008,cursor,Sql Server,Sql Server 2008,Cursor,我试图在SQLServer数据库上做一个游标,以从每个表中获取所有不同的值。 我希望具有值的表如下所示: Database Schema Table Field Value A dbo T1 F1 1 A dbo T1 F1 2 A dbo T1 F1 3 ... ... ... .
Database Schema Table Field Value
A dbo T1 F1 1
A dbo T1 F1 2
A dbo T1 F1 3
... ... ... ... ...
我的问题是,当我试图用QUOTENAME(TABLE_CATALOG)输入数据库名时,它不会计算函数,而是将函数写入我要生成的表中。
我尝试了单引号/双引号,但没有结果
?我应该如何编写查询?谢谢
Set Nocount ON
DECLARE cur CURSOR FOR
SELECT 'SELECT DISTINCT ' + ''' QUOTENAME(TABLE_CATALOG) + '''+' As DBName,'+ + QUOTENAME(c.COLUMN_NAME) + ' AS Datos' + ' FROM ' + QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.COLUMNS AS c
WHERE c.DATA_TYPE LIKE '%char%'
DECLARE @cmd VARCHAR(MAX);
OPEN cur;
FETCH NEXT FROM cur INTO @cmd;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @cmd
EXEC(@cmd);
FETCH NEXT FROM cur INTO @cmd;
END
CLOSE cur;
DEALLOCATE cur;
Set Nocount OFF
顺便说一句:我从一个示例()中获取了代码并对其进行了编辑()您没有用
''QUOTENAME(TABLE_CATALOG)+''
正确地获得引号。它应该是''+QUOTENAME(表目录)+'
引号通过将它们加倍来转义
SELECT 'blah' --> blah
SELECT 'it''s' --> it's
SELECT ' Alex''' + 's pen' --> Alex's pen
语法错误
SELECT 'it's' --> syntax error
完成的查询如下:
SET NOCOUNT ON
DECLARE cur CURSOR FOR
SELECT 'SELECT DISTINCT ''' + QUOTENAME(TABLE_CATALOG) + ''' As DBName, ''' + QUOTENAME(TABLE_SCHEMA) + ''' AS [Schema], ''' + QUOTENAME(COLUMN_NAME) + ''' AS ColumnName, '
+ QUOTENAME(c.COLUMN_NAME) + ' AS Datos ' +
'FROM ' + QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.COLUMNS AS c
WHERE c.DATA_TYPE LIKE '%char%'
DECLARE @cmd VARCHAR(MAX);
OPEN cur;
FETCH NEXT FROM cur INTO @cmd;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @cmd
EXEC(@cmd);
FETCH NEXT FROM cur INTO @cmd;
END
CLOSE cur;
DEALLOCATE cur;
SET NOCOUNT OFF
注:
- 如果不希望字符串被
包围,请删除[]
(方形括号)QUOTENAME
- 对
的注释:出于您的目的,此视图将返回中所述的正确数据(来自@ShannonSeverance的注释)。此视图缺少有关列属性的详细信息信息\u SCHEMA.COLUMNS