我的SQL技能有限:
我有一个数据库(本例中为SQLBase),列中有几个LONGVAR。 我正在搜索具有特定类型的所有COLUMNS的实际长度。
SELECT tbname,name FROM sysadm.syscolumns where coltype='LONGVAR';
以上陈述有效。它为我提供了所有表和具有LONGVAR数据类型的相应列名。现在我想获取这些数据并搜索所有相应的表(行,所以数据)并查找相应LONGVAR列的长度(例如,查找最大值或超过特定限制的那些)。
我认为它可以通过嵌套SELECT语句的子查询来解决,但不知道如何制定语句。
答案 0 :(得分: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了解不多,这就是我要开始的地方。