查找数据库中最长列的长度 - SELECT 子查询
finding length of longest coulmn in a database - SELECT subquery
我在SQL的技能有限:
我有一个数据库(在本例中为 SQLBase),它的列中有几个 LONGVAR。
我正在搜索具有特定类型的所有 COLUMNS 的实际长度。
SELECT tbname,name FROM sysadm.syscolumns where coltype='LONGVAR';
以上说法有效。它为我提供了所有具有 LONGVAR 数据类型的表和相应的列名。现在我想获取这些数据并搜索所有相应的表(行,数据)并找到相应的 LONGVAR 列的长度(例如找到最大值,或超过某个限制的那些)。
我认为它可以通过嵌套 SELECT 语句的子查询来解决,但不知道如何制定语句。
我对 SQLbase 没有任何真正的了解,所以我在这里可能会偏离基础:但是如果我试图在 SQL 服务器上执行此操作,一个简单的方法会是做如下事情:
SELECT
tbname,
name,
'SELECT ''' + tbname + ''' AS TableName, ''' + name + ''' AS ColumnName, MAX(LEN(' + name + ')) AS ColumnLength FROM ' + tbname + ' -- add a WHERE clause here if needed' AS Query
FROM sysadm.syscolumns
WHERE coltype='LONGVAR';
这将输出一组值,然后您可以 copy/paste 将其输入新的查询编辑器 window 并在 运行 之前进行检查。
其他更复杂的解决方案将涉及动态 SQL 自动执行这些语句中的每一个;但同样,我对 SQLbase 了解不多,这就是我要开始的地方。
我在SQL的技能有限:
我有一个数据库(在本例中为 SQLBase),它的列中有几个 LONGVAR。 我正在搜索具有特定类型的所有 COLUMNS 的实际长度。
SELECT tbname,name FROM sysadm.syscolumns where coltype='LONGVAR';
以上说法有效。它为我提供了所有具有 LONGVAR 数据类型的表和相应的列名。现在我想获取这些数据并搜索所有相应的表(行,数据)并找到相应的 LONGVAR 列的长度(例如找到最大值,或超过某个限制的那些)。
我认为它可以通过嵌套 SELECT 语句的子查询来解决,但不知道如何制定语句。
我对 SQLbase 没有任何真正的了解,所以我在这里可能会偏离基础:但是如果我试图在 SQL 服务器上执行此操作,一个简单的方法会是做如下事情:
SELECT
tbname,
name,
'SELECT ''' + tbname + ''' AS TableName, ''' + name + ''' AS ColumnName, MAX(LEN(' + name + ')) AS ColumnLength FROM ' + tbname + ' -- add a WHERE clause here if needed' AS Query
FROM sysadm.syscolumns
WHERE coltype='LONGVAR';
这将输出一组值,然后您可以 copy/paste 将其输入新的查询编辑器 window 并在 运行 之前进行检查。
其他更复杂的解决方案将涉及动态 SQL 自动执行这些语句中的每一个;但同样,我对 SQLbase 了解不多,这就是我要开始的地方。