Sql server 您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME,而不是
Sql server 您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME,而不是,sql-server,tsql,dynamic,aggregation,information-schema,Sql Server,Tsql,Dynamic,Aggregation,Information Schema,您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME,而不是通过串联添加[]。我注意到在您的示例中,我将开始尝试使用它。 DECLARE @sqlStatement NVARCHAR(MAX) = ''; WITH CTE AS ( SELECT SCH.[name] AS [
您可以想到的补充回答。我们的答案非常相似,+1来自我的sideOne提示:您应该始终使用
QUOTENAME
,而不是通过串联添加[]
。我注意到在您的示例中,我将开始尝试使用它。我们的答案非常相似,+1来自我的侧边提示:您应该始终使用QUOTENAME
,而不是通过串联添加[]
。我注意到在您的示例中,我将开始尝试使用它。
DECLARE @sqlStatement NVARCHAR(MAX) = '';
WITH CTE AS
(
SELECT
SCH.[name] AS [Schema]
,TAB.[name] AS [Table]
,COL.[name] AS [Column]
FROM sys.columns AS COL
JOIN sys.tables AS TAB
ON COL.[object_id] = TAB.[object_id]
JOIN sys.schemas AS SCH
ON TAB.[schema_id] = SCH.[schema_id]
WHERE COL.system_type_id NOT IN (104,240)
)
SELECT @sqlStatement +=
'UNION ALL
SELECT
'''+[Schema]+''' AS [Schema]
,'''+[Table]+''' AS [Table]
,'''+[Column]+''' AS [Column]
,CONVERT(NVARCHAR(MAX),MAX(['+[Column]+'])) AS ColumnMax
,CONVERT(NVARCHAR(MAX),MIN(['+[Column]+'])) AS ColumnMin
FROM ['+[Schema]+'].['+[Table]+']
'
FROM CTE
;
SET @sqlStatement = STUFF(@sqlStatement,1,10,'');
EXEC sp_executesql @sqlStatement;
DECLARE @cmd NVARCHAR(MAX)=
(
SELECT STUFF(
(
SELECT ' UNION ALL SELECT ''' + c.TABLE_SCHEMA + ''' AS TableSchema '
+ ',''' + c.TABLE_NAME + ''' AS TableName '
+ ',''' + c.COLUMN_NAME + ''' AS ColumnName '
+ ',''' + c.DATA_TYPE + ''' AS ColumnType '
+ ',CAST(MIN(' + QUOTENAME(c.COLUMN_NAME)+') AS NVARCHAR(MAX)) AS MinValue '
+ ',CAST(MAX(' + QUOTENAME(c.COLUMN_NAME)+') AS NVARCHAR(MAX)) AS MaxValue '
+ ' FROM ' + QUOTENAME(c.TABLE_SCHEMA) + '.' + QUOTENAME(c.TABLE_NAME)
+ ' WHERE ' + QUOTENAME(c.COLUMN_NAME) + ' IS NOT NULL'
FROM INFORMATION_SCHEMA.COLUMNS AS c
WHERE c.DATA_TYPE IN('bigint','float','int','datetime') --add all types you want to check, be aware of implicit conversions!
FOR XML PATH(''),TYPE
).value('.','nvarchar(max)'),1,10,'')
);
--PRINT @cmd
EXEC(@cmd);