Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle और SQL सर्वर के बीच रिक्त स्थान को संभालने का अंतर

मैंने Oracle और SQL सर्वर के बीच रिक्त स्थान को संभालने के बारे में एक प्रयोग किया क्योंकि मेरे काम के लिए Oracle का उपयोग करते समय अंतर देखा गया था।
(Oracle का संस्करण Oracle 19c है और SQL सर्वर का संस्करण SQL Server 2019 है क्योंकि ये मेरे पीसी में पहले ही स्थापित हो चुके थे।)

प्रयोग

Oracle

मैंने निम्नलिखित तालिका और डेटा के तहत एक प्रयोग किया।

CREATE TABLE CompareTestTable
(
     Seq         NUMBER
    ,ColCHAR     CHAR(10)
    ,ColVARCHAR  VARCHAR2(10)
);

INSERT INTO CompareTestTable VALUES( 1, 'aaa',  'bbb'  );       -- No space
INSERT INTO CompareTestTable VALUES( 2, 'aaa ', 'bbb ' );       -- A space after a string
INSERT INTO CompareTestTable VALUES( 3, ' aaa', ' bbb' );       -- A space before a string
INSERT INTO CompareTestTable VALUES( 4, ' aaa ', ' bbb ' );     -- Spaces after and before a string
select * from CompareTestTable where ColCHAR = 'aaa';       -- Hit SEQ=1,2 records
select * from CompareTestTable where ColCHAR = 'aaa ';      -- Hit SEQ=1,2 records
select * from CompareTestTable where ColCHAR = ' aaa';      -- Hit SEQ=3,4 records
select * from CompareTestTable where ColCHAR = ' aaa ';     -- Hit SEQ=3,4 records

select * from CompareTestTable where ColVARCHAR = 'bbb';    -- Hit SEQ=1 record
select * from CompareTestTable where ColVARCHAR = 'bbb ';   -- Hit SEQ=2 record
select * from CompareTestTable where ColVARCHAR = ' bbb';   -- Hit SEQ=3 record
select * from CompareTestTable where ColVARCHAR = ' bbb ';  -- Hit SEQ=4 record

कॉलम प्रकार चार होने पर स्ट्रिंग के बाद की जगह को अनदेखा कर दिया जाता है।
हालांकि, Varchar2 की स्थिति में, स्ट्रिंग के बाद या उससे पहले की जगह को अनदेखा नहीं किया जाता है।
विवरण निम्नलिखित है
https://docs.oracle.com/cd/B13789_01/server.101/b10759/sql_elements002.htm#:~:text=Nonpadded%20Comparison%20Semantics,-Oracle%20compares%20two&text=If%20two%20values%20of% 20भिन्न,%20मान%20%20माना जाता है%20बराबर।

SQL सर्वर

ओरेकल के लिए एक ही मामले के रूप में, मैंने SQL सर्वर पर निम्न तालिका और डेटा के तहत एक प्रयोग किया।

CREATE TABLE CompareTestTable
(
     Seq         INT
    ,ColCHAR     CHAR(10)
    ,ColVARCHAR  VARCHAR(10)
)
INSERT INTO CompareTestTable VALUES( 1, 'aaa',  'bbb'  );       -- No space
INSERT INTO CompareTestTable VALUES( 2, 'aaa ', 'bbb ' );       -- A space after a string
INSERT INTO CompareTestTable VALUES( 3, ' aaa', ' bbb' );       -- A space before a string
INSERT INTO CompareTestTable VALUES( 4, ' aaa ', ' bbb ' );     -- Spaces after and before a string
select * from CompareTestTable where ColCHAR = 'aaa';       -- Hit SEQ=1,2 records
select * from CompareTestTable where ColCHAR = 'aaa ';      -- Hit SEQ=1,2 records
select * from CompareTestTable where ColCHAR = ' aaa';      -- Hit SEQ=3,4 records
select * from CompareTestTable where ColCHAR = ' aaa ';     -- Hit SEQ=3,4 records

select * from CompareTestTable where ColVARCHAR = 'bbb';    -- Hit SEQ=1,2 records
select * from CompareTestTable where ColVARCHAR = 'bbb ';   -- Hit SEQ=1,2 records
select * from CompareTestTable where ColVARCHAR = ' bbb';   -- Hit SEQ=3,4 records
select * from CompareTestTable where ColVARCHAR = ' bbb ';  -- Hit SEQ=3,4 records

चार का परिणाम ओरेकल के समान है।
हालांकि, वर्चर की स्थिति में, परिणाम Oracle और SQL सर्वर के बीच भिन्न होता है, स्ट्रिंग के बाद या उससे पहले के रिक्त स्थान को अनदेखा किया जाता है।

इसलिए, ओरेकल और एसक्यूएल सर्वर के बीच के अंतर के कारण वर्चर का उपयोग करते समय यह ध्यान दिया जाना चाहिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mybatis द्वारा निष्पादित ओरेकल प्रक्रिया से पैरामीटर प्राप्त नहीं कर सकता

  2. ओरेकल उदाहरण में इन आउट पैरामीटर के साथ संग्रहीत प्रक्रिया

  3. Oracle Cloud Infrastructure (OCI) पर Cloudera CDP डेटा सेंटर परिनियोजित करें

  4. विशिष्ट कॉलम नामों वाली तालिकाओं के लिए Oracle डेटाबेस खोजें?

  5. ऑरैकल डेटाबेस में दिनांक स्वरूप कैसे बदलें