2011-05-30 8 views
19

मेरे पास PostgreSQL में एक साधारण तालिका है जिसे नामक एक साधारण टेक्स्ट फ़ील्ड वाले कीवर्ड कहा जाता है। मैं पहले अक्षर अपरकेस में कीवर्ड के सभी नामों को रूपांतरित करना चाहता हूं। क्या psql कंसोल से ऐसा करने का कोई तरीका है?पोस्टग्रेज़ में सभी रिकॉर्ड को टाइटलकेस में कनवर्ट करें, पहला अक्षर अपरकेस

उत्तर

45

एक initcap() समारोह नहीं है, आप प्रत्येक कीवर्ड के पहले अक्षर को अपरकेस में और निम्न वर्ण लोअरकेस अर्थ रहे हैं:

update foo 
set bar = initcap(bar) 

वरना substring() गठबंधन और upper():

update foo 
set bar = upper(substring(bar from 1 for 1)) || 
      substring(bar from 2 for length(bar)) 

http://www.postgresql.org/docs/current/static/functions-string.html

+3

initcap नहीं करता है की तरह था गैर-अंग्रेजी पात्रों के साथ ठीक काम नहीं करते हैं इनिटैप (आर। लोपेज़ विना टोंडोनिया रियोजा व्हाइट विना) आउटपुट को "आर लोपेज़ विना टोंडोनिया रियोजा व्हाइट विना" के रूप में देता है। सही उत्पादन "आर लोपेज़ विना टोंडोनिया रियोजा व्हाइट विना" है –

8
select initcap('r. lópez viña tondonia Rioja White Viña'); 

यह सही उत्तर देता है (आर। पोस्टपेरेस (9.0.7) के हमारे संस्करण में लोपेज़ विना टोंडोनिया रियोजा व्हाइट विना)।

0

@denis, सही जवाब दिया!

लेकिन मेरे मामले में मैं PgAdmin3 का उपयोग करता हूं, इसलिए डेटाबेस का चयन करने के बाद SQL क्वेरी विकल्प हैं, इसलिए हम इसमें उपर्युक्त क्वेरी सीधे जोड़ सकते हैं।

मैं एक मेज कहा जाता subcategory_subcategory (तालिका का नाम) में मैं एक स्तंभ मान जिसका नाम ITEM_NAME (स्तंभ का नाम) था बदलना चाहते थे, तो मेरे क्वेरी इस

update subcategory_subcategory 
set Item_name = initcap(Item_name) 
संबंधित मुद्दे