我在Postgresql中有一个测试表。它有一个字段value_exist,它是一个字符串,但其中包含字母数字值和数据中的一些特殊字符。我想忽略其中的字符[/ alpha /?/ $/encoding /。],并检查记录是否只有数字。如果只有它的唯一数字,那么我们只需要其他字母数字我们需要null。请参考下面的例子:从数字记录中提取数字并将null传递给Postgresql中的字母数字
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
只需要准确NUMERICS即从0-9号的记录,其余全部(特殊字符/字母)作为空过去了。 – user1538020
请说明问题。什么是[/ alpha /?/ $/encoding /。]?整数或浮点数?有或没有标志?在正确理解中,结果只能是数字或'NULL'? –
alpha - 字母,$ - 特殊字符,编码可以是表中的任何字符。我尝试了下面,它适用于字母数字︰SELECT(case'kk9'〜'([AZ AZ])'then null else 77 end)K.但是我想检查“$ 99 $” - 这应该给我null,但它没有给我null。所以,对于$而言它无法处理它。 – user1538020