我需要确保涉及用户名的所有列的最大长度为140个字符。我对SQL很陌生,我很好奇你会如何做到这一点。搜索所有表格并返回列的最大长度
我首先返回包含相关列名称的所有表的列表。同时,我也希望看到这些列的字符限制。这是迄今为止我所知道的,除非我不知道如何创建一个将填充查询的Column和Length部分的变量。我正在使用SQL Server 2008.
SELECT
t.name AS 'Table Name',
c.name AS 'Column Name',
max(len(%COLUMN_NAME%)) AS 'Max Length'
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%COLUMN_NAME%'
ORDER BY 'Table Name'
已解决。谢谢!
如果你是新来的SQL我想知道你为什么需要这样的apporach。为什么不选择适当表格的正确列而不是使用'sys.tables'? – 2014-10-20 14:37:08
您是否需要列值的最大可能长度(也存在于'sys.columns'中)或存储的最长实际值的长度(这需要构造动态查询)? – 2014-10-20 14:39:54
@TimSchmelter我们有很多表格和不同的列名称可能的变化。例如,我需要找到'userid'的实例,还有'changedby','modifiedby','%verbed%'的每个实例...我经常使用查询来查找合适的表,但是我以此为学习体验,将字符数最大值添加到查询中。我想也许这种技术将来对其他类型的查询很有用。 – Defpotec2020 2014-10-20 14:41:15