从数字记录中提取数字并将 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
我在 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