Конференция "Базы" » Отделить цифры от букв (Firebird) [Firebird 2.1.4]
 
  • Eh (14.01.13 16:40) [0]
    Добрый день!

    Подскажите, пожалуйста, есть ли в Firebird встроенная функция для отделения цифр от букв, например:

    SELECT функция('a123gb456') ...

    Чтобы в результате получилось '123456'.
  • sniknik © (14.01.13 17:57) [1]
    > Чтобы в результате получилось '123456'.
    SELECT REPLACE(REPLACE(REPLACE('a123gb456', 'a', ''), 'g', ''), 'b', '')

    в MSSQL работает... а в Firebird-е вроде что то по функциям/синтаксису совпадает.
  • Eh (14.01.13 18:12) [2]
    если так перечислять весь алфавит и знаки ... :(

    Хотелось бы указать диапазон, например REPLACE('a123gb456', ['a'..'z'], '')
  • Eh (14.01.13 18:17) [3]
    Просмотрел все встроенные ф-ции в Firebird и ничего не нашёл.

    Остаётся только использовать ConvertSymbols(s1, s2, s3) из rFunc.dll.
    (Меняет символы из набора s2 на набор s3 в строке s1.)
  • RWolf © (14.01.13 19:42) [4]
    написать UDF совсем не сложно.
  • Виталий Панасенко (17.01.13 11:18) [5]
    execute block (in_par varchar(1024)=:in_par)
    returns (out_par varchar(1024))
    as
    declare variable i integer;
    declare variable s varchar(1);
    begin
    i = 1;
    out_par = '';
    while (i<=char_length(in_par))
     do
      begin
        s = substring(in_par from :i for 1);
        if ( s between '0' and '9') then
         out_par = out_par ||s;
        i = i + 1;
      end
      suspend;
    end
  • имя (09.10.13 14:23) [6]
    Удалено модератором
    Примечание: спам
 
Конференция "Базы" » Отделить цифры от букв (Firebird) [Firebird 2.1.4]
Есть новые Нет новых   [134430   +2][b:0][p:0]