Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отобразить в запросе из текстового поля только цифры / 17 сообщений из 17, страница 1 из 1
29.11.2021, 08:26
    #40115782
san7667
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Добрый день, подскажите пожалуйста, есть ли варианты вытащить из текстового поля только цифры?

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

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

ты и в mysql не силен. Учебник по sql открывать пробовал?
...
Рейтинг: 0 / 0
29.11.2021, 09:45
    #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
29.11.2021, 09:47
    #40115797
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Есть еще вариант с UDF, но я бы его не советовал :)
...
Рейтинг: 0 / 0
29.11.2021, 09:53
    #40115799
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
san7667
есть ли варианты вытащить из текстового поля только цифры?
где в поле содержится "as44asda7f4as" , отобразить только 4474


Еще можно озвучить зачем именно это нужно сделать. Вполне вероятно что задача состоит в другом, и это другое можно решить совсем по другому.
...
Рейтинг: 0 / 0
29.11.2021, 11:28
    #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
29.11.2021, 12:27
    #40115844
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Подумалось, что на больших строках гораздо быстрее будет REPLACE()
...
Рейтинг: 0 / 0
29.11.2021, 13:50
    #40115869
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Везде, где в сабже есть слово "отобразить" - Firebird ни при чём. Нет у птички
средств отображения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.11.2021, 13:54
    #40115873
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Dimitry Sibiryakov,

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

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


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

С ним поможет sed/awk и т.п.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.11.2021, 14:45
    #40115894
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Dimitry SibiryakovВезде, где в сабже есть слово "отобразить" - Firebird ни при чём. Нет у птички средств отображения.
где-то в 1996 году звонок в Эпсилон (где я тогда работал) - "а можно к вам приехать посмотреть на InterBase?".
Я чуть не поперхнулся, и завис. Говорю - а как вы его будете смотреть-то. это же sql-сервер. Сам по себе он не работает, и смотреть там некуда...
...
Рейтинг: 0 / 0
30.11.2021, 18:03
    #40116252
pizmon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
Да, builtin function TRANSLATE не помешала бы.
...
Рейтинг: 0 / 0
01.12.2021, 11:13
    #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
01.12.2021, 17:12
    #40116484
pizmon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отобразить в запросе из текстового поля только цифры
fraks
pizmon
Да, builtin function TRANSLATE не помешала бы.

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


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

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


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