如何使用 PostgreSQL 计算一列中有多少条目是数字的

How to count how many entries in a column are numeric using PostgreSQL

我正在尝试计算一列中有多少条目既是数字又满足其他条件。我了解该脚本在 SQL:

中的含义
    SELECT COUNT(ingredients)
    FROM data.pie
    WHERE description LIKE 'cherry'
      AND is.numeric(price) = true

但我不确定如何将其转换为 PostgreSQL 脚本。任何帮助将不胜感激。

谢谢。

您当前的查询稍作修改后应该可以工作:

SELECT COUNT(ingredients)
FROM data.pie
WHERE
    description LIKE 'cherry' AND
    price ~ '^[0-9]+([.][0-9]+)?$';

蒂姆展示的另一种替代方法是创建一个函数...

CREATE OR REPLACE FUNCTION is_numeric(val VARCHAR) RETURNS BOOLEAN AS $$
DECLARE x NUMERIC;
BEGIN
    x = val::NUMERIC;
    RETURN TRUE;
    EXCEPTION WHEN OTHERS THEN    
    RETURN FALSE;
END;
$$
STRICT
LANGUAGE plpgsql IMMUTABLE;

.. 可以这样使用:

db=# SELECT is_numeric('foo'), is_numeric('1'), is_numeric('1.39');
 is_numeric | is_numeric | is_numeric 
------------+------------+------------
 f          | t          | t
(1 Zeile)