22 lines
430 B
Text
22 lines
430 B
Text
CREATE OR REPLACE FUNCTION is_valid_number(s) AS
|
|
CASE
|
|
WHEN s IS NULL THEN false
|
|
WHEN try_cast(s AS DOUBLE) IS NOT NULL THEN true
|
|
ELSE false
|
|
END;
|
|
|
|
# Illustration
|
|
select s, is_valid_number(s) from
|
|
(select unnest([
|
|
'123.0',
|
|
'123.',
|
|
'-123',
|
|
'3.14159',
|
|
'1.2.3',
|
|
'abc',
|
|
'A440',
|
|
' 12 ',
|
|
'0A',
|
|
'+1E10',
|
|
'1E-10'
|
|
]) as s);
|