이전에 initcap()으로 처리 한 문자열이 있는데, 그 부분을 대문자로 변환합니다.regexp_replace의 psql 대문자 역 참조 문자열
구체적으로 - 나는 로마 숫자를 대문자로 표시하려고합니다. 나는 내가 할 수있는 가정
에야나 III Sobieskiego
야나 리이 Sobieskiego를 교체하고 싶습니다
더욱 구체적으로 일종의 상위 substring-subquery comb을 사용한다. 오 그것을 달성하기 위해,하지만 난 그것과 같이, 하나의 REGEXP_REPLACE에서 작동하도록 노력하고 있어요 :
어떻게됩니까SELECT ulica --, regexp_matches(ulica , '((^|\s)([XxIiVv]+)(\s|$))', 'g') , regexp_replace(ulica, '((^|\s)([XxIiVv]+)(\s|$))', '\2'||upper('q\3q')||'\4' , 'g') FROM ( SELECT unnest(ARRAY['Jana Iii Sobieskiego', 'Xx Lecia', 'Xxx Lecia Panowania Zygmunta Iii Wazy'])::text AS ulica ) AS src
이라고 대체 문자열의 '정적'부분에 위의 작품 (Q ... Q), 역 참조는 아닙니다.
내가
야나 QIiiQ Sobieskiego
누구든지 방법이 작업을 수행하는 생각을 가지고 얻을?
는 PostgreSQL의 9.1
어떻게 해결 했습니까? 이 순간에 나는 임시 해결책을 취할 것입니다. 미안 해요 @ Stephan 제 대답을 확인하지 않았기 때문에 제 시스템에서 소문자를 받아들이 기가 쉬웠습니다 –
나는하지 않았습니다. 그것은 할 수없는 것 같습니다. – murison
댓글을 주셔서 감사합니다! 그것은 사후에 좋다. Postgres의 최신 버전에서 이것이 바뀌 었는지 궁금합니다. 건배 –