PostgreSQL에 테스트 테이블이 있습니다. 필드 value_exist는 문자열이지만 값과 영숫자 값이 있으며 데이터의 일부 특수 문자가 있습니다. [/ alpha /?/$/encoding /.] 문자를 무시하고 레코드에 숫자 만 있는지 확인하고 싶습니다. 유일한 숫자라면 영숫자에 대해 숫자 만 필요합니다. null이 필요합니다. 아래의 예를 참조하십시오 숫자 레코드에서 숫자를 추출하고 PostgreSQL에서 영숫자로 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
숫자 레코드에서 0부터 9까지의 정확한 숫자 만 필요합니다. 나머지는 모두 null로 전달 된 나머지 (특수 문자/영숫자)입니다. – user1538020
질문을 명확히하십시오. '[/ alpha /?/$/encoding /.]은 무엇입니까? 정수 또는 부동 소수점 숫자? 기호 유무에 관계없이? In은 결과가 숫자 또는 'NULL'일 수 있음을 정확히 이해합니까? –
알파 - 알파벳, $ - 특수 문자, 인코딩은 테이블에있는 모든 문자가 될 수 있습니다. 나는 다음을 시도했다 : 영숫자 : SELECT ('kk9'~ '([az AZ])'then null else 77 end) K. 그러나 "$ 99 $"를 확인하고 싶다. null하지만 null을 제공하지 않습니다. 그래서 $를 처리 할 수 없습니다. – user1538020