从数字记录中提取数字并将 null 传递给 Postgresql 中的字母数字

Extract numbers from number records and pass null to alphanumeric in Postgresql

我在 Postgresql 中进行了测试 table。它有一个 value_exist 字段,它是一个字符串,但其中包含字母数字值和数据中的一些特殊字符。我想忽略其中的字符 [/alpha/?/$/encoding/.] 并检查记录是否只有数字。如果它只有数字,那么我们只需要数字,否则我们需要 null 的字母数字。请参考以下示例:


我尝试了下面的代码,但它没有给我想要的输出:

SELECT CASE WHEN value_exist ~ '^([$?\*+-][0-9]|[0-9][$?\*+-]|[0-9][0-9])$'
                THEN REGEXP_REPLACE(value_exist, '[$?\*+-]', '', 'g')
                ELSE NULL END value_new
    FROM test_table
SELECT nullif(
          regexp_replace(
             value_exist,
             E'^.*[^\d].*$',
             'x'),
          'x')
FROM test_table;

我测试了这个并且它有效..它只需要数字,如果我们得到的不是数字,包括数字,那么它将它作为 null 传递。

select case when 'H44$'~'^[0-9]*$' then 88
else null end ---- Result -> null

 select case when '44'~'^[0-9]*$' then 88
 else null end   ---- Result -> 44