Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > UDF библиотеки


Автор: StayAtHome 19.2.2005, 21:57
Начал было писать собственные UDF-ки, но времени маловато, а ньюансы там есть. Посоветуйте хорошую UDF библиотеку желательно с исходниками. Пока что мне нужны ф-и обработки строк и даты/времени.
На IBase.ru надыбал FreeUDF, но что-то мне подсказывает, что она не совсем поддерживает кириллицу...

Автор: Alex 19.2.2005, 22:32
а можно узнать, что за такие задачи у вас, что вам так udf понадобились?

Автор: StayAtHome 20.2.2005, 00:58
smile Да не то что бы так понадобились. Ну к примеру получить из полных фамилии, имени и отчества -- инициалы. Или к примеру -- разницу в днях между двумя датами. Или -- сумма прописью. И т. д.
А что?

Автор: Alex 20.2.2005, 01:06
Цитата(StayAtHome @ 20.2.2005, 00:58)
Ну к примеру получить из полных фамилии, имени и отчества -- инициалы.

Только что у себя в программе писал:
Код
...
(v.fam || ' ' || UPPER(SUBSTRING(v.imja from 1 for 1)) || '. ' || UPPER(SUBSTRING(v.otsh from 1 for 1)) || '.') as Fam
...

Добавлено @ 01:09
Цитата(StayAtHome @ 20.2.2005, 00:58)
Или к примеру -- разницу в днях между двумя датами.

На ibase вроде была библиотека работы с датами.

Цитата(StayAtHome @ 20.2.2005, 00:58)
Или -- сумма прописью.

Прейдется помойму самому писать. Или спросить у Петровича у него помойму есть готовая.

Автор: StayAtHome 20.2.2005, 01:19
Цитата
(v.imja from 1 for 1)

Опять я документацию не дочитал.... Что это?
А есть "стандартная" ф-я для поиска вхождения подстроки в строку?

Автор: Alex 20.2.2005, 01:30
Цитата
SUBSTRING( <string expr> FROM <pos> [FOR <length>])
Internal function implementing the ANSI SQL SUBSTRING() function. It will return a stream consisting
of the byte at <pos> and all subsequent bytes up to the end of the string. If the option FOR <length>
is specified, it will return the lesser of <length> bytes or the number of bytes up to the end of the
input stream.
The first argument can be any expression, constant or identifier that evaluates to a string.
<pos> must evaluate to an integer.
<pos> starts at 1, like other SQL commands.
Neither <pos> nor <length> can be query parameters.
Because <pos> and <length> are byte positions, the identifier can be a binary blob, or a sub_type 1
text blob with an underlying one-byte-per-character charset. The function currently does not handle
text blobs with Chinese (2 byte/char maximum) or Unicode (3 byte/char maximum) character sets. For
a string argument (as opposed to a blob), the function will tackle ANY charset.
Available in SQL and DSQL.
UPDATE ATABLE
SET COLUMNB = SUBSTRING(COLUMNB FROM 4 FOR 99)
WHERE ...
Please refer also to the section on External Functions (UDFs) following this, for details of changes and
additions to external substring functions in the standard UDF library.

Добавлено @ 01:34
Цитата(StayAtHome @ 20.2.2005, 01:19)
А есть "стандартная" ф-я для поиска вхождения подстроки в строку?

Извлечение подстроки из строки.

Автор: StayAtHome 20.2.2005, 02:28
Я неточно выразился. Как найти позиуцию первого символа искомой подстроки?

Автор: Alex 20.2.2005, 02:46
Помойму SQL это тебе не позволит сделать, но я могу ошибаться.

Автор: StayAtHome 20.2.2005, 03:00
Ну вот. Потому я и спрашиваю ваши рекомендации по поводу UDF библиотек. Есть какая-то "стандартная" де-факто (типа RX lib)? На Ibase.ru дофига всего, но пробовать каждую не охота. Кто чем пользутеся? Или может есть толковая дока по написанию собственных UDF? Опять таки на IBase.ru -- старенькие статьи.

Автор: Alex 20.2.2005, 11:39
Цитата(StayAtHome @ 20.2.2005, 03:00)
Или может есть толковая дока по написанию собственных UDF? Опять таки на IBase.ru -- старенькие статьи.

Из док я знаю на ibase статья: http://www.ibase.ru/devinfo/udf_ok.htm старенькая, но от этого она не стала менее полезной, плюс в ней есть ссылка на одну библиотеку http://www.ibase.ru/download/tbudf.zip. Скачай, я думаю, она тебя устроит процентов на 90%

Автор: Fiyanov 12.7.2011, 16:03
Подниму тему... Есть InterBase или 2007 или 2009. Есть Delphi 7. Пытаюсь сделать запрос с SUBSTRING ругаеться на слово FROM.
Захожу в IB Expert та же история. UDF писать нет желания. В чём может быть проблема? Делаю то же самое с ФИО... то есть нужны инициалы.
Нашёл rFunc. Но хотелось бы без него...

Автор: Akella 12.7.2011, 16:50
Создай новую тему и опиши нормально, по-человечески, проблему. Чтобы тут никто не угадывал, что и как ты там делаешь и какие у тебя ошибки.

Автор: Frees 12.7.2011, 18:15
Цитата(Fiyanov @  12.7.2011,  19:03 Найти цитируемый пост)
Подниму тему... Есть InterBase или 2007 или 2009. Есть Delphi 7. Пытаюсь сделать запрос с SUBSTRING ругаеться на слово FROM.Захожу в IB Expert та же история. UDF писать нет желания. В чём может быть проблема? Делаю то же самое с ФИО... то есть нужны инициалы.Нашёл rFunc. Но хотелось бы без него...

http://firebirdsql.su/doku.php?id=substring

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)