Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
FREEUDFLIB | F_CRLF |
Win32 | Возвращает строку Windows возврат каретки/начало строки ASCII(13) || ASCII(10) |
Аргументы | Нет |
Возвращаемое значение | Строка в стиле языка С (завершается нулем) |
Пример | Следующий оператор добавляет Windows-маркеры конца строки в столбец таблицы (например, во внешнюю таблицу для экспорта в другое приложение): INSERT INTO EXTABLE(COLUMN1, COLUMN2, EOL) VALUES (99, 'An item of data', CRLF); |
FREEUDFLIB | F_FINDW0RD(VALUE, N) |
Win32 | Начиная с указанной позиции n, возвращает слово, содержащее символ этой позиции и следующие символы вплоть до следующего символа пробела |
Аргументы | VALUE: N: целый тип, указывающий на позицию (начинающуюся с нуля) в строке, где находится требуемое слово |
Возвращаемое значение | Строка |
Замечания | Рассматривайте строки, передаваемые в F_FINDWORD, как массивы символов, начинающиеся с индекса 0 |
Пример | Следующий оператор возвращает слово 'pie': SELECT F_FINDWORD('I never tasted pie like Mom used to make', 15) FROM RDB5DATABASE; |
FREEUDFLIB | F_LEFT(VALUE, N) |
Win32 | Возвращает первые N символов из входной строки VALUE |
Аргументы | VALUE: столбец или выражение, результатом вычисления которого является значение типа строки. N: целый тип, указывающий количество возвращаемых символов из левой части VALUE |
Возвращаемое значение | Строка из N символов |
Пример | Следующий оператор возвращает строку 'I never tasted pie': SELECT F_LEFT('I never tasted pie like Mom used to make', 18) FROM RDB$DATABASE; |
Связанные или похожие функции | См. также SUBSTRLEN, SUBSTRO , внутреннюю функцию SUBSTRING |
FREEUDFLIB | F_LINEWRAP(VALUE, STARTPOS, WIDTH) |
Win32 | Получая начальную позицию (STARTPOS) в строке(VALUE) и размер (WIDTH), возвращает часть строки VALUE, начиная с позиции STARTPOS, которая занимает пространство в WIDTH символов |
Аргументы | VALUE: столбец или выражение, результатом вычисления которого является значение типа строки. STARTPOS: целый тип, указывающий на позицию (начинающуюся с нуля) в строке, где находится возвращаемая строка. WIDTH: целый тип, задающий ширину столбца (печатаемого/отображаемого), которую должна занимать возвращаемая строка |
Возвращаемое значение | Строка из WIDTH (или меньше) символов |
Замечания | Рассматривайте строки, передаваемые в F_LINEWRAP, как массивы символов, начинающиеся с индекса 0 |
Пример | Следующий оператор возвращает строку 'which, taken at the flood': SELECT F_WORDWRAP('There is a tide in the affairs of men which, taken at the flood, leads on to good fortune.', 38, 25) FROM RDB$DATABASE; |
FREEUDFLIB | F_LRTRIM(VALUE) |
Win32 | Удаляет из строки все начальные и конечные пробелы |
Аргументы | VALUE: столбец или выражение, результатом вычисления которого является значение типа строки |
Возвращаемое значение | Строка с отсутствующими начальными и конечными пробелами |
Пример | Следующий оператор возвращает строку 'lean and mean': SELECT F_LRTRIM(' lean and mean') FROM RDB$DATABASE; |
Связанные или похожие функции | См. также LTRIM, RTRIM |
FREEUDFLIB | F_PROPERCASE(VALUE) |
Win32 | Преобразует строку в "правильный" вид, то есть берет каждое слово и заменяет первый символ на эквивалент в верхнем регистре, переводя каждый другой символ слова в нижний регистр |
Аргументы | VALUE: столбец или выражение, результатом вычисления которого является значение типа строки |
Возвращаемое значение | Строка, подобная следующей: 'Now Is The Time For All Good Men To Come To The Aid Of The Party' |
Замечания | Хотя эта функция и удобна для некоторых задач, она имеет ряд ограничений. В частности, не может правильно трактовать такие имена, как dOliveira, OHalloran или MacDonald |
Пример | Следующий оператор вернет строку 'Eric S. Raymond': SELECT F_PROPERCASE('ERIC S. RAYMOND') FROM RDB$DATABASE; |
Связанные или похожие функции | .I См. также LOWER, UPPER |
Функции BLOB [159]
FBUDF | STRING2BLOB(VALUE) |
Linux, Win32 | Принимает поле строки (столбец, переменную, выражение) и возвращает текст BLOB |
Аргументы | VALUE: столбец или выражение, результатом вычисления которого является значение типа VARCHAR 300 символов или меньше |
Возвращаемое значение | Текст BLOB |
Замечания | В большинстве случаев нет необходимости вызывать эту функцию. Firebird напрямую принимает строки в качестве входных данных для BLOB |
Пример | Следующий фрагмент модуля PSQL выполняет конкатенацию двух строк и конвертирует результат в текст BLOB: . . . DECLARE VARIABLE V_COMMENTl VARCHAR(250); DECLARE VARIABLE V_COMMENT2 VARCHAR(45); DECLARE VARIABLE V_MEMO VARCHAR(296) = ' '; . . . SELECT<. . .другие поля. . .>, COMMENT1, COMMENT2 FROM APPLICATION WHERE APPLICATION_ID = :APP_ID INTO <...другие переменные...>, :V_COMMENTl, V_COMMENT2; IF (V_COMMENT1 IS NOT NULL) THEN V_MEMO = V_COMMENT1; IF (V_COMMENT2 IS NOT NULL) THEN BEGIN IF (V_MEMO = '') THEN V_MEMO = V_C0MMENT2; ELSE V_MEM0 = V_MEMO ||' ' || V_COMMENT2; END IF (V_MEMO <> ' ') THEN INSERT INTO MEMBERSHIP( FIRST_NAME, LAST_NAME, APP_ID, BLOB_MEMO) VALUES ( :FIRST_NAME, :LAST_NAME, :APP_ID, STRING2BLOB (:V_MEMO) ) ; . . . |
Связанные или похожие функции | См. также F_BLOBASPCHAR |
159
Самый последний вариант библиотеки FreeUDFLib с исправленными функциями BLOB находится на www.ibase.ru.
– Прим. науч. ред.
FREEUDFLIB | F_BLQBMAXSEGENTLENGTH(VALUE) |
Win32 | Принимаемая ссылка на BLOB В памяти возвращает количество сегментов для его хранения |
Аргументы | VALUE является идентификатором столбца BLOB В таблице |
Возвращаемое значение | Целое число, являющееся количеством сегментов |
Пример | SELECT F_BLOBSEGMENTCOUNT(BLOB_MEMO) AS SEGMENT_COUNT FROM MEMBERSHIP WHERE MEMBER_ID = ....; |
Связанные или похожие функции | См. также F_MAXBLOBSEGMENTSIZE, F_BLOBSIZE |
FREEUDFLIB | F_BLOBSIZE(VALUE) |
Win32 | Принимаемая ссылка на BLOB в памяти возвращает размер в байтах |
Аргументы | VALUE является идентификатором столбца BLOB в таблице |
Возвращаемое значение | Целое число, являющееся размером BLOB в байтах |
Пример | SELECT F_BLOBSIZE(BLOB_MEMO) AS SIZE_OF_MEMO FROM MEMBERSHIP WHERE MEMBER_ID = ; |
Связанные или похожие функции | См. также F_BLOBSEGMENTCOUNT, F_BLOBMAXSEGMENTSIZE |
FREEUDFLIB | F_BLOBASPCHAR(VALUE) |
Win32 | Принимает ссылку на поле BLOB (столбец или переменная) и возвращает [ его содержимое в виде строки, завершаемой нулем |
Аргументы | VALUE является ссылкой на столбец или переменную BLOB |
Возвращаемое значение | Строка, завершаемая нулем |
Замечания | Используйте эту функцию только для тех BLOB, о которых вы точно знаете, ; что их размер не превышает максимальную длину типа VARCHAR (32 765 байт). Учитывайте увеличенный размер в байтах в BLOB, хранящих многобайтовые символы |
Пример | SELECT F_BLOBASPCHAR(BLOB_MEMO) AS MEMO_STRING FROM MEMBERSHIP WHERE MEMBER_ID = ; |
Связанные или похожие функции | См. также STRING2BLOB |
FREEUDFLIB | F_BLQBLEFT(VALUE, N) |
Win32 | Получает ссылку на поле BLOB (столбец или переменная) и возвращает первые n символов |
Аргументы | VALUE: идентификатор столбца или переменной BLOB. N: максимальное количество возвращаемых символов. Не должно превышать максимальной длины для VARCHAR (32 765 байт) |
Возвращаемое значение | Завершаемая нулем строка длиной N или менее символов |
Замечания | Учитывайте увеличенный размер в байтах в BLOB, хранящих многобайтовые символы |
Пример | SELECT F_BLOBLEFT(BLOB_MEMO, 20) AS MEMO_START FROM MEMBERSHIP WHERE MEMBER_ID = ; |
Связанные или похожие функции | См. также F_BLOBMID, F_BLOBRIGHT |