Sql server 如何列出SQL Server数据库中所有表中的所有nvarchar,每个表的最大长度为?
我试过这个:Sql server 如何列出SQL Server数据库中所有表中的所有nvarchar,每个表的最大长度为?,sql-server,Sql Server,我试过这个: select TABLE_NAME, COLUMN_NAME from information_schema.columns where data_type = 'nvarchar' and (character_maximum_length = -1 or character_maximum_length = 3000) order by TABLE_NAME, COLUMN_NAME 但我也喜欢返回,对于每个字段,它的最大使
select
TABLE_NAME, COLUMN_NAME
from
information_schema.columns
where
data_type = 'nvarchar'
and (character_maximum_length = -1 or character_maximum_length = 3000)
order by
TABLE_NAME, COLUMN_NAME
但我也喜欢返回,对于每个字段,它的最大使用长度。我该怎么做呢?一点动态SQL就可以实现这一点。由于您使用的是SQL Server 2016,因此我们需要在此处使用旧的FOR XML PATH解决方案,而不是新的STRING_AGG函数: 声明@SQL nvarcharMAX, @CRLF nchar2=NCHAR13+NCHAR10; SET@SQL=stuffle选择@CRLF+N'UNION ALL'+@CRLF+ N'选择N'+QUOTENAMEs.[name],+N'作为SchemaName,'+@CRLF+ N'N'+quotename.[name],+N'作为表名,'+@CRLF+ N'N'+quotename.[name],+N'作为列名,'+@CRLF+ N'MAXLEN'+QUOTENAMEc.[name]+N'AS MaxLength'+@CRLF+ N'来自'+quotename.[name]+N'.+quotename.[name] 从sys.s 在s.schema\u id=t.schema\u id上连接sys.t表 连接t.object\u id=c.object\u id上的sys.c列 在c.system\u type\u id=ct.system\u type\u id上连接sys.types ct 其中ct.[name]=N'nvarchar' 和c.max_长度,单位为3000,-1 对于XML路径N,键入.value'/text[1]','nvarcharMAX'+N';',1,13,N PRINT@SQL-你的调试朋友 EXEC sys.sp_executesql@SQL;
你为什么要这样做?这闻起来像是一个。你有467列这样的长度吗?老实说,我认为设计阶段出现了一些问题。将db的副本移动到开发环境中,然后运行alter列。您将很快发现由于截断导致的失败。@markzzz这是因为我试图找出真正的问题是什么,即设计。没关系,我现在知道了,但我确实需要知道版本。@Larnu Microsoft SQL Server 2016,13.x