Найти длину самого длинного столбца в базе данных - 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, я бы начал с этого.