0

我的 SQL 技能有限:

我有一个数据库(在这种情况下是 SQLBase),它的列中有几个 LONGVAR。我正在搜索具有特定类型的所有 COLUMNS 的实际长度。

SELECT tbname,name FROM sysadm.syscolumns where coltype='LONGVAR';

上述声明有效。它为我提供了具有 LONGVAR 数据类型的所有表和相应的列名。现在我想获取这些数据并搜索所有相应的表(行,所以数据)并找到相应 LONGVAR 列的长度(例如,找到最大值,或者超过某个限制的那些)。

我的想法是可以通过嵌套 SELECT 语句的子查询来解决它,但不知道如何制定该语句。

4

1 回答 1

1

我对 SQLbase 没有任何真正的了解,所以我可能在这里偏离基础:但如果我试图在 SQL Server 上执行此操作,一个简单的方法是执行以下操作:

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';

这将输出一组值,然后您可以将其复制/粘贴到新的查询编辑器窗口并在运行前检查。

其他更复杂的解决方案将涉及自动执行这些语句中的每一个的动态 SQL;但同样,对 SQLbase 了解不多,这就是我要开始的地方。

于 2015-05-20T17:27:56.497 回答