Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Длина строки в Firebird 1.5


Rule ©   (2005-09-20 16:23:00) 

необходима функция длины строки, ну допустим чтоб сделать такой запрос select length(field1) from table1 ...
спасибо всем за помощь ...
неужели только УДФ ???


Rule   (2005-09-20 19:04:00) [1]

Андрей Жук ©   (20.09.05 18:38) [17]
эт я знаю, опять жеж шла речь не о конекретно этой удф, а о целесообразности подключать удф или писать сторед ...


Андрей Жук   (2005-09-20 18:38:00) [2]


> эта имел ввиду что надо наличие длл или со на сервере

ib_udf - в штатной поставке firebird/interbase


Rule   (2005-09-20 18:00:00) [3]

Desdechado ©   (20.09.05 17:52) [14]
в ХП другое преимущество - права


кстати да, но думаю в данном случае это не актуально


Rule   (2005-09-20 17:59:00) [4]

Андрей Жук ©   (20.09.05 17:40) [13]
эта имел ввиду что надо наличие длл или со на сервере


Desdechado   (2005-09-20 17:52:00) [5]

в ХП другое преимущество - права
а с восстановлением проблемы только тогда, когда dll отсутствует


Андрей Жук   (2005-09-20 17:40:00) [6]


> токо вот в сторедах преимущество, что после
> восттановления базы не надо опять объявлять внешнюю
> функцию ...

UDF также не нужно опять объявлять


Rule   (2005-09-20 17:15:00) [7]

Desdechado ©   (20.09.05 16:58) [11]
спасибо, действительно самое быстрое решение, с этим я согласен ... токо вот в сторедах преимущество, что после восттановления базы не надо опять объявлять внешнюю функцию ...


Desdechado   (2005-09-20 16:58:00) [8]

DECLARE EXTERNAL FUNCTION strlen
CSTRING(4096)
RETURNS INTEGER BY VALUE
ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
UDF - самое быстрое решение


Johnmen   (2005-09-20 16:55:00) [9]

>Rule ©   (20.09.05 16:53) [9]
>ну я думаю так будет дольше ...

Я думаю, что нет.
Да и не важно это - экономить на спичках :)


Rule   (2005-09-20 16:53:00) [10]

Johnmen ©   (20.09.05 16:43) [8]
ну я думаю так будет дольше ...


Johnmen   (2005-09-20 16:43:00) [11]

Можно ещё так попробовать (не уверен насчет работоспособности параметра в сабстринге для FB1.5):

S - строка
I=1;
C=SUBSTRING(C FROM I FOR 1);
WHILE (C<>'') DO BEGIN
 I=I+1;
 C=SUBSTRING(C FROM I FOR 1);
 END


Rule   (2005-09-20 16:36:00) [12]

Desdechado ©   (20.09.05 16:26) [2]

посмотрел не нашел ???, мож подскажешь ???


Rule   (2005-09-20 16:36:00) [13]

Johnmen ©   (20.09.05 16:28) [3]

нашел

CREATE PROCEDURE Len (str VARCHAR(100))
 RETURNS (len INTEGER) AS
DECLARE VARIABLE pat VARCHAR(100);
BEGIN
 len = null;
 IF (str IS NULL) THEN EXIT;

 pat = '';
 len = 0;
 WHILE (NOT str LIKE pat) DO BEGIN
   pat = pat || '_';
   len = len + 1;
 END
END


Rule   (2005-09-20 16:33:00) [14]

Johnmen ©   (20.09.05 16:28) [3]
а подтолкнуть на мысль как это сделать ???


Rule   (2005-09-20 16:32:00) [15]

Desdechado ©   (20.09.05 16:26) [2]
ща поищу, но вроед смотрел ...


Johnmen   (2005-09-20 16:28:00) [16]

Не обязательно удф, но чуть-чуть кода в хп, можно...


Desdechado   (2005-09-20 16:26:00) [17]

ib_udf


Rule   (2005-09-20 16:24:00) [18]

забыл главное :-))), доки уже перерыл :-)))


Наверх

Титульная страница Поиск, карта сайта Написать письмо