2009-07-28 20 views
6

मैं इस बयान चला रहा हूँ:ओरेकल - सफेद रिक्त स्थान को कैसे निकालें?

select trim(a),trim(b) from table x; 

हालांकि मैं ट्रिम() बयान का इस्तेमाल किया है, मेरी उत्पादन इस तरह दिखता है:

A               B        
___               ____ 
kunjramansingh            smartdude 

स्तंभ 'एक' और 'बी' के डेटाप्रकार है varchar2 (255)।

दो आउटपुट के डेटा के बीच एक अंतर है। मैं खाली स्थान के बिना डेटा दिखाने के लिए चाहते हैं - इस तरह एक प्रारूप में:

A    B 
___   ______ 
kunjramansinghsmartdude 

मैं यह कैसे कर सकते हैं?

+0

प्रतीक्षा, हम बात कर रहे हैं डेटा नहीं दिया या प्रदर्शन प्रश्न परिणामों के? एसक्यूएल * प्लस? – curtisk

+0

हाय कर्टिस्क, हम लौटाए गए डेटा के बारे में बात कर रहे हैं> –

उत्तर

12
SELECT REGEXP_REPLACE('A B_ __ kunjramansingh smartdude', '\s*', '') 
FROM dual 

--- 
AB___kunjramansinghsmartdude 

अद्यतन:

बस श्रेणीबद्ध तार:

SELECT a || b 
FROM mytable 
+0

अच्छा! बस मेरे दिन बचाया ... – CFNinja

5

अगर मैं सही ढंग से समझ, यह तुम क्या चाहते

select (trim(a) || trim(b))as combinedStrings from yourTable 
3

यह एक आउटपुट स्वरूपण मुद्दा की तरह लगता है है ? अगर एसक्यूएल प्लस का उपयोग, इस तरह स्तंभ आदेश का उपयोग (यह मानते हुए आप प्रत्येक के लिए 20 वर्ण की एक अधिकतम प्रदर्शन चौड़ाई चाहते हैं):

column a format a20 
column b format a20 
select a, b from mytable; 
+0

अच्छी तरह से वह अब इसे कवर किया गया है, या तो परिदृश्य :) – curtisk

1

एसक्यूएल साथ ही, अधिकतम संभव मूल्य धारण करने के लिए कॉलम को फ़ॉर्मेट जाएगा, जिसमें यह मामला 255 वर्ण है।

पुष्टि करने के लिए अपने उत्पादन वास्तव में उन अतिरिक्त स्थान न हो, इस प्रयास करें:

SELECT 
    '/' || TRIM(A) || '/' AS COLUMN_A 
,'/' || TRIM(B) || '/' AS COLUMN_B 
FROM 
    MY_TABLE; 

'/' वर्ण अपने उत्पादन से अलग कर दिया जाता है, तो पता चलता है कि यह है कि यह रिक्त स्थान नहीं है, लेकिन कुछ अन्य व्हाइटस्पेस चरित्र जो वहां मिला (टैब, उदाहरण के लिए)। यदि ऐसा है, तो शायद यह आपके आवेदन में कहीं भी एक इनपुट सत्यापन मुद्दा है।

हालांकि, सबसे संभावित परिदृश्य यह है कि '/' वर्ण वास्तव में आपके बाकी तारों को छूएंगे, इस प्रकार यह साबित होगा कि व्हाइटस्पेस वास्तव में छंटनी की जाती है।

यदि आप उन्हें एक साथ आउटपुट करना चाहते हैं, तो Quassnoi द्वारा दिए गए उत्तर को यह करना चाहिए।

यदि यह पूरी तरह से एक प्रदर्शन मुद्दा है, तो टोनी एंड्रयूज द्वारा दिए गए उत्तर को ठीक काम करना चाहिए।

11

ऐसा लगता है कि आप sqlplus में क्वेरी निष्पादित कर रहे हैं। स्क्लप्लस को यह सुनिश्चित करने की आवश्यकता है कि कॉलम रिक्ति में पर्याप्त जगह है ताकि अधिकतम स्ट्रिंग आकार प्रदर्शित किया जा सके (255)। आम तौर पर, समाधान अधिकतम स्ट्रिंग आकार को कम करने के लिए कॉलम स्वरूपण विकल्पों (क्वेरी से पहले चलाएं: कॉलम ए प्रारूप ए 20) का उपयोग करना है (इस लंबाई से अधिक वाली रेखाएं एकाधिक रेखाओं पर प्रदर्शित की जाएंगी)।

-1

क्वेरी अपने वास्तविक तालिका & स्तंभ नाम के साथ की जगह TABLE_NAME & स्तंभ नीचे रन:

UPDATE TABLE_NAME SET COLUMN_NAME=TRIM(' ' from COLUMN_NAME); 
3

आप अपने चयन क्वेरी में 'rpad' का उपयोग करें और आकार निर्दिष्ट कर सकते हैं ...

select rpad(a , 20) , rpad(b, 20) from x ; 

जहां पहला पैरामीटर आपका कॉलम नाम है और दूसरा पैरामीटर वह आकार है जिसे आप पैड करना चाहते हैं।

0

बीमा करने के लिए अपने उत्पादन में कोई खाली स्थान के है निम्नलिखित का उपयोग करें:

select first_name || ',' || last_name from table x; 

आउटपुट

जॉन स्मिथ

जेन, डो

1
REPLACE(REPLACE(a.CUST_ADDRESS1,CHR(10),' '),CHR(13),' ') as ADDRESS 
1

कहो, हमारे पास अल्फान्यूमेरिक वर्णों वाले मान वाले कॉलम हैं केवल अंडरस्कोर। हमें इस कॉलम को सभी रिक्त स्थान, टैब या जो भी सफेद वर्णों से ट्रिम करने की आवश्यकता है। नीचे दिया गया उदाहरण समस्या का समाधान करेगा। छंटनी एक और मूल दोनों तुलना के लिए प्रदर्शित किया जा रहा है। select '/'||REGEXP_REPLACE(my_column,'[^A-Z,^0-9,^_]','')||'/' my_column,'/'||my_column||'/' from my_table;

0

आप एक विशेष स्तंभ मान में सफेद रिक्त स्थान को बदलने के लिए चाहते हैं, तो आप के लिए काम करने के लिए निम्न स्क्रिप्ट का उपयोग कर सकते हैं,

UPDATE TableName TN 
    SET TN.Column_Name = TRIM (TN.Column_Name); 
संबंधित मुद्दे