![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Длина строки в 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]забыл главное :-))), доки уже перерыл :-)))