相关疑难解决方法(0)

与PostgreSQL的isnumeric()

我需要确定一个给定的字符串是否可以解释为SQL语句中的数字(整数或浮点).如下所示:

SELECT AVG(CASE WHEN x ~ '^[0-9]*.?[0-9]*$' THEN x::float ELSE NULL END) FROM test
Run Code Online (Sandbox Code Playgroud)

我发现Postgres的模式匹配可以用于此.所以我调整了这个地方给出的语句来合并浮点数.这是我的代码:

WITH test(x) AS (
    VALUES (''), ('.'), ('.0'), ('0.'), ('0'), ('1'), ('123'),
    ('123.456'), ('abc'), ('1..2'), ('1.2.3.4'))

SELECT x
     , x ~ '^[0-9]*.?[0-9]*$' AS isnumeric
FROM test;
Run Code Online (Sandbox Code Playgroud)

输出:

    x    | isnumeric 
---------+-----------
         | t
 .       | t
 .0      | t
 0.      | t
 0       | t
 1       | t
 123     | t
 123.456 | t
 abc     | f
 1..2    | f
 1.2.3.4 …
Run Code Online (Sandbox Code Playgroud)

regex postgresql

34
推荐指数
2
解决办法
7万
查看次数

标签 统计

postgresql ×1

regex ×1