आप इसे अकेले रेगेक्सपी में नहीं कर सकते क्योंकि रेगेक्सपी कैप्चर किए गए समूहों पर गणित का समर्थन नहीं करता है, भले ही वे सभी संख्यात्मक वर्ण हों। तो आपको उस समूह को प्राप्त करना होगा जो मंजिल संख्या का प्रतिनिधित्व करता है, गणित करें और इसे वापस इसमें विभाजित करें:
SELECT regexp_replace('B12F34', 'B(\d+)F(\d+)', 'Building \1 - Floor ') ||
((regexp_matches('B12F34', '[0-9]+$'))[1]::int + 10)::text;
दो रेगेक्सपी कॉल के कारण बहुत कुशल नहीं है। एक अन्य विकल्प यह है कि उप-क्वेरी में केवल दो नंबर प्राप्त करें और मुख्य क्वेरी में स्ट्रिंग को इकट्ठा करें:
SELECT format('Building %L - Floor %L', m.num[1], (m.num[2])::int + 10)
FROM (
SELECT regexp_matches('B12F34', '[0-9]+', 'g') AS num) m;