任何人都可以帮助我如何只选择文字中的数字?
字符串可以是随机的:
ABCD123DEF -> Result must be 123
393SEA981F -> Result must be 393981
谢谢!Firebird版本是2.5
答案 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