Как узнать запросом длину поля типа varchar (в символах).
Модератор: kdv
Как узнать запросом длину поля типа varchar (в символах).
Всем здравствуйте !
BCB 6, InterBase 6.5.
Вопрос такой: в базе есть таблица, надо узнать длину её поля типа varchar (в символах).
Понятно, что можно, типа IBTable1->FieldByName("Name")->Size, но на фига мне IBTable, я запросом хочу.
Читал о системных таблицах InterBase, но всё равно не понял, как правильно составить запрос.
PS: Согласен с возможными критическими замечаниями в свой адрес - я новичок в этой области знаний.
PPS: Заранее спасибо.
BCB 6, InterBase 6.5.
Вопрос такой: в базе есть таблица, надо узнать длину её поля типа varchar (в символах).
Понятно, что можно, типа IBTable1->FieldByName("Name")->Size, но на фига мне IBTable, я запросом хочу.
Читал о системных таблицах InterBase, но всё равно не понял, как правильно составить запрос.
PS: Согласен с возможными критическими замечаниями в свой адрес - я новичок в этой области знаний.
PPS: Заранее спасибо.
-
- Сообщения: 31
- Зарегистрирован: 26 окт 2004, 15:18
В поставку Interbase(не помню с какой версии), входит библиотека ib_udf.dll, в ней есть функция strlen
похожие функции есть в других udf библиотеках. Подробности можно найти на сайте и(или) в документации.
Код: Выделить всё
DECLARE EXTERNAL FUNCTION STRLEN
CSTRING(32767) CHARACTER SET WIN1251
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
Имхо он метаданными интересуется. То есть, не размером конкретного значения поля, а описанием. Если бы не лето - подумал бы что вопрос из какой-нибудь лабы или курсовика. Даже если так, на второй второй вопрос отвечать не буду, дальше пусть ыщо раз читает про системные таблицы и думкает 

Код: Выделить всё
Select F.rdb$character_length
From rdb$relation_fields RF
Inner Join rdb$fields F On F.rdb$field_name=RF.rdb$field_source
Where RF.rdb$relation_name='TABLETNAME'
And RF.rdb$field_name='FIELDNAME'
2Anton Glasunov
Спасибо за ответ, но я, наверное, мутновато сформулировал вопрос...
Я имел в виду размер самого поля. Ну, например, если поле объявлено VARCHAR (30), то искомый результат будет 30,
а функция strlen, насколько я понял, будет ввозвращать мне переменную величину - длину строки, которая записана в этом поле.
Спасибо за ответ, но я, наверное, мутновато сформулировал вопрос...
Я имел в виду размер самого поля. Ну, например, если поле объявлено VARCHAR (30), то искомый результат будет 30,
а функция strlen, насколько я понял, будет ввозвращать мне переменную величину - длину строки, которая записана в этом поле.
2 Merlin
Вот-вот, именно метаданными я и интересовался (чёрт, а слово-то какое красивое !). И вот ведь character_length, а я всё в field_length тыкался. Спасибо, Merlin, ещё раз - ведь просто разжевал и в рот положил ! Всё заработало !!
PS: А второго вопроса я вроде-бы не задавал...
PPS: Лекции-то никто не читает, а со времён последней лабы уж 21 год прошёл (я строитель-технолог в одной из ипостасей).
Вот-вот, именно метаданными я и интересовался (чёрт, а слово-то какое красивое !). И вот ведь character_length, а я всё в field_length тыкался. Спасибо, Merlin, ещё раз - ведь просто разжевал и в рот положил ! Всё заработало !!
PS: А второго вопроса я вроде-бы не задавал...
PPS: Лекции-то никто не читает, а со времён последней лабы уж 21 год прошёл (я строитель-технолог в одной из ипостасей).