Извлечение чисел из числовых записей и передача нуля в алфавитно-цифровой в Postgresql

У меня есть тестовая таблица в Postgresql. У него есть поле value_exist, которое является строкой, но в нем есть буквенно-цифровые значения и некоторые специальные символы в данных. Я хочу игнорировать символы [/alpha/?/$/ Encoding/.] В нем и проверить, есть ли в записи только цифры. Если это только цифры, то нам нужны только цифры, для буквенно-цифровых нам нужен нуль. Смотрите приведенный ниже пример:

введите описание изображения здесь
Я попробовал приведенный ниже код, но он не дает желаемого результата:

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

2 ответа

Решение

Я проверил это, и это работает.. Это занимает только цифры, и если мы получим другие, чем числа, включая числа, то он будет равен нулю.

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
SELECT nullif(
          regexp_replace(
             value_exist,
             E'^.*[^\\d].*$',
             'x'),
          'x')
FROM test_table;
Другие вопросы по тегам