Найти длину самого длинного столбца в базе данных - SELECT подзапрос

Мои навыки в SQL ограничены:

У меня есть база данных (в нашем случае SQLBase), в столбцах которой есть пара LONGVAR. Я ищу фактическую длину всех столбцов, которые имеют определенный тип.

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

Вышеприведенное утверждение работает. Это дает мне все таблицы и соответствующие имена столбцов, которые имеют тип данных LONGVAR. Теперь я хотел бы взять эти данные и выполнить поиск по всем соответствующим таблицам (строки, то есть данные) и найти длины соответствующих столбцов LONGVAR (например, чтобы найти максимальное значение или значения, превышающие определенный предел).

У меня есть идея, что это можно решить с помощью подзапроса вложенного оператора SELECT, но я не знаю, как сформулировать оператор.

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, я бы начал с этого.

Другие вопросы по тегам