powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отобразить в запросе из текстового поля только цифры
17 сообщений из 17, страница 1 из 1
Отобразить в запросе из текстового поля только цифры
    #40115782
san7667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите пожалуйста, есть ли варианты вытащить из текстового поля только цифры?

где в поле содержится "as44asda7f4as" , отобразить только 4474
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115785
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты есть.

* сохраненной процедурой
* сохраненной функцией
* на клиенте
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115787
san7667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fraks,
Есть какая-нибудь встроенная функция?
Я просто не очень силен в firebird ...
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115789
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
san7667
fraks,
Есть какая-нибудь встроенная функция?
Я просто не очень силен в firebird ...

ты и в mysql не силен. Учебник по sql открывать пробовал?
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115796
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
san7667
fraks,
Есть какая-нибудь встроенная функция?
Я просто не очень силен в firebird ...

Какая-нибудь? Они в документации описаны.
Однако, версии Firebird быывают разные, с разными возможностями, поэтому лучше сразу озвучивать какую версию (и почему именно эту) используешь, что бы советы соответствовали твоим возможностям.

Я бы просто бежал посимвольно, сравнивая попадает ли код символа в диапазон цифр.
На 2.5.* это можно оформить в виде сохраненной процедуры или execute block
а на 3.* уже есть сохраненные функции - было бы гораздо удобнее ее использовать.

Ключевые слова из доки:
Код: plaintext
1.
2.
3.
4.
5.
6.
CHAR_LENGTH
SUBSTRING
ASCII_VAL
IF
CREATE PROCEDURE
CREATE FUNCTION
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115797
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще вариант с UDF, но я бы его не советовал :)
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115799
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
san7667
есть ли варианты вытащить из текстового поля только цифры?
где в поле содержится "as44asda7f4as" , отобразить только 4474


Еще можно озвучить зачем именно это нужно сделать. Вполне вероятно что задача состоит в другом, и это другое можно решить совсем по другому.
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115826
rstrelba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
san7667,

Нашел в загашниках
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create or alter procedure GET_DIGIT_ONLY (
    IPARAM varchar(250))
returns (
    OPARAM varchar(32))
as
declare variable I integer;
begin
  oparam = '';
  i = 1;
  while (i <= char_length(:iparam)) do
  begin
    if (substring(:iparam from i for 1) similar to '[0123456789]')  then
      oparam = :oparam || (substring(:iparam from i for 1));
    i = :i + 1;
    if (OCTET_LENGTH(oparam)>15) then break;
  end
  suspend;
end
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115844
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумалось, что на больших строках гораздо быстрее будет REPLACE()
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115869
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Везде, где в сабже есть слово "отобразить" - Firebird ни при чём. Нет у птички
средств отображения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115873
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ISQL
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115876
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks

Еще можно озвучить зачем именно это нужно сделать.


Препод так решил.
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115884
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryISQL

С ним поможет sed/awk и т.п.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40115894
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВезде, где в сабже есть слово "отобразить" - Firebird ни при чём. Нет у птички средств отображения.
где-то в 1996 году звонок в Эпсилон (где я тогда работал) - "а можно к вам приехать посмотреть на InterBase?".
Я чуть не поперхнулся, и завис. Говорю - а как вы его будете смотреть-то. это же sql-сервер. Сам по себе он не работает, и смотреть там некуда...
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40116252
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, builtin function TRANSLATE не помешала бы.
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40116403
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pizmon
Да, builtin function TRANSLATE не помешала бы.

Есть DECODE, но она не очень подходит к этому случаю.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
-- Синтаксис:

DECODE(testexpr,
expr1, result1
[, expr2, result2 ...]
[, defaultresult])

-- эквивалентная конструкция CASE

CASE testexpr
WHEN expr1 THEN result1
[WHEN expr2 THEN result2 ...]
[ELSE defaultresult]
END



Все равно бежать посимвольно.
Можно использовать вместо вот тут
Код: plsql
1.
    if (substring(:iparam from i for 1) similar to '[0123456789]')  then


но будет длиннее код, и не факт что эффективнее в работе.
...
Рейтинг: 0 / 0
Отобразить в запросе из текстового поля только цифры
    #40116484
pizmon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
pizmon
Да, builtin function TRANSLATE не помешала бы.

Есть DECODE, но она не очень подходит к этому случаю.


Хорош еще гиперболический арккосинус ACOSH, но тоже не знаю, как его применить в этой задаче. ACOSH прекрасен тем, что файл README.builtin_functions.txt дочитывают обычно именно до него, и на нём бросают.

Код: sql
1.
translate(value, translate(value, '0123456789', ''), '')
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отобразить в запросе из текстового поля только цифры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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