powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите как получить только цифры из строки или исключить пробелы и энтер?
11 сообщений из 11, страница 1 из 1
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083496
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем,
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
есть поля varchar (100) для номер телефона
там данные храниться так примерно с энтерами и пробелами

Код: plsql
1.
2.
3.
4.
998 456 22 55 
85 12 32 45
4112321321
455454555 41 555 5554 45



Ищу так но не работает потому что там пробелы
Код: plsql
1.
select * from sometable where phone_num containing :param



Заране благодарен
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083497
AltHasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek,
функция Replace, если перманентно нужно заменить или
функция Substring. Коды симввола возврата каретки #10,#13, код пробела #32.

Удачи !
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083505
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Взял с стэковера
если кому интересно
этот код обернул функцию

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
EXECUTE BLOCK
RETURNS (number VARCHAR(100))
AS
  DECLARE VARIABLE temp VARCHAR(100);
  DECLARE VARIABLE temp_char VARCHAR(1);
  DECLARE VARIABLE step INT;
BEGIN
  FOR SELECT
    sometable.sometext
  FROM sometable
  INTO :temp DO
  BEGIN
    step = 1;
    number = '';
    WHILE (:step < CHAR_LENGTH(:temp)) DO
    BEGIN
      temp_char = SUBSTRING(:temp FROM step FOR 1);
      IF (POSITION(:temp_char IN '0123456789') > 0) THEN
        number = :number || :temp_char;

      step = step + 1;
    END
    SUSPEND;
  END
END
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083507
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek,

ты ж не удосужился даже проверить правильность работы
и поспешил опубликовать
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083509
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему проверил
работает. То есть функция работает

Если у вас есть другие решение поделитсеь пожалуйста
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083514
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek,
Однако недопроверил.
Ибо работает, но результат НЕ всегда верный

уже предлагали 22346677
Код: sql
1.
2.
3.
b=replace(b,' ','');
b=replace(b,ascii_char(13),'');
b=replace(b,ascii_char(10),'');



зы. Проверь для строки '12345'
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083542
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри вот этот код я переделал функцию

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SET TERM ^ ;

create or alter procedure GET_DIGIT_ONLY (
    IPARAM varchar(100))
returns (
    OPARAM varchar(100))
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;
  end
  suspend;
end^

SET TERM ; ^
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083547
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek,

Ты же понимаешь, что используя процедуру "убрать все символы кроме цифр" вместо простой уборки пробелов заменой, теряешь в производительности ОЧЕНЬ сильно?
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083552
mr.Ulugbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSery
Пока быстро работает но пока...

В таблице где то 6000 запись

Такой вариант работает быстрее фунции?

Код: sql
1.
2.
3.
4.
5.
6.
7.
select
  replace(
    replace(
      replace(t.phone, ' ', ''),
    '-', ''),
  '/', '') AS phone
from sometable t
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083590
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek,

Замерь, в чём проблема-то.
Думаю, что значительно быстрее. Даже если ещё сверху пару реплейсов накрутить.
...
Рейтинг: 0 / 0
Подскажите как получить только цифры из строки или исключить пробелы и энтер?
    #40083623
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr.Ulugbek
Пока быстро работает но пока...
Почему рядом с исходным полем не повесить поле-агрегат на триггере? реплейсы в триггер, поиск по очищенному от шелухи полю будет куда быстрее.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Подскажите как получить только цифры из строки или исключить пробелы и энтер?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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