powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Взять часть строки.
6 сообщений из 6, страница 1 из 1
Взять часть строки.
    #32083130
Aculina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! У меня очередной вопрос. Есть столбец, где храняться значения типа:
F1
/123 /6879/5989/35246/
Нужно выделить из него эти кода, т.е значение 123, значение 6879 и т.д. и связать со значениями из др.таблице.Проблема как выделить. Помогите пожалуйста.Большое спасибо.
...
Рейтинг: 0 / 0
Взять часть строки.
    #32083152
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UDF
...
Рейтинг: 0 / 0
Взять часть строки.
    #32083233
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормализовать таблицу и не парится.
...
Рейтинг: 0 / 0
Взять часть строки.
    #32083238
Aculina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица должна оставаться в таком же виде, к сожалению от меня это не зависит а насчет UDF если можно поподробней пожалуйста.
...
Рейтинг: 0 / 0
Взять часть строки.
    #32083275
p519446
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Интернете я скачал такой файл: rfunc.dll (могу прислать), его надо положить в подкаталог ..\UDF той папки, где у тебя IB. Затем делаешь так:
DECLARE EXTERNAL FUNCTION WORDNUM
CSTRING(16384),
INTEGER,
CSTRING(32),
SMALLINT
RETURNS CSTRING(256)
ENTRY_POINT 'fn_wordnum' MODULE_NAME 'rfunc';
/* это функция выборки "слов" из строки, см. дальше */

Также можно зацепить функцию подсчета "слов":
DECLARE EXTERNAL FUNCTION WORDCOUNT
CSTRING(16384),
CSTRING(32),
SMALLINT
RETURNS INTEGER BY VALUE
ENTRY_POINT 'fn_wordcount' MODULE_NAME 'rfunc';

Пример:
SELECT WORDNUM('333/22222/111/000', 1, '/', 0) FROM RDB$DATABASE;
Результат: '333' (второй параметр есть 1, т.е выбирает ПЕРВУЮ лексему)

SELECT WORDNUM('333/22222/111/000', 3, '/', 0) FROM RDB$DATABASE;
Результат: '111'

SELECT WORDCOUNT('1/22/333/44444/55555', '/', 0) FROM RDB$DATABASE;
Результат: 5

Какую роль играет четвертый параметр в WORDNUM() и третий параметр в WORDCOUNT() - я не знаю.
...
Рейтинг: 0 / 0
Взять часть строки.
    #32083482
Aculina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p519446 привет если не сложно пришли пожалуйста на почтовый ящик
aculina@mailru.com Спасибо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Взять часть строки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]