仅从文本中选择数字

时间:2017-03-02 08:01:35

标签: firebird firebird2.5

任何人都可以帮助我如何只选择文字中的数字?

字符串可以是随机的:

ABCD123DEF -> Result must be 123
393SEA981F -> Result must be 393981

谢谢!Firebird版本是2.5

2 个答案:

答案 0 :(得分:3)

我想到的第一个:

使用存储过程:

execute procedure get_digit_only :input_param
returning_values :output_param

使用方法:

select get_digit_only.oparam from get_digit_only ('393SEA981F')

{{1}}

答案 1 :(得分:2)

你可以进行EXECUTE BLOCK

EXECUTE BLOCK
RETURNS (number VARCHAR(20))
AS
  DECLARE VARIABLE temp VARCHAR(20);
  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

OR存储过程,将EXECUTE BLOCK替换为CREATE OR ALTER PROCEDURE SomeProcedure

EXECUTE BLOCK可以原样运行,STORED PROCEDURE需要调用

SELECT SomeProcedure.number
FROM SomeProcedure
相关问题