Извлечение чисел из числовых записей и передача нуля в алфавитно-цифровой в 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;