Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Perbedaan penanganan spasi antara Oracle dan SQL Server

Saya melakukan percobaan tentang penanganan spasi antara Oracle dan SQL Server karena melihat perbedaan saat menggunakan Oracle untuk pekerjaan saya.
(Versi Oracle adalah Oracle 19c dan versi SQL Server adalah SQL Server 2019 karena ini telah diinstal di PC saya.)

Eksperimen

Oracle

Saya melakukan percobaan di bawah tabel dan data berikut.

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

Spasi setelah string tampaknya diabaikan ketika tipe kolom adalah Char.
Namun, dalam kasus Varchar2, spasi setelah atau sebelum string tampaknya tidak diabaikan.
Detailnya berikut ini
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% 20berbeda,%20nilai%20%20dianggap%20sama.

SQL Server

Seperti kasus yang sama untuk Oracle, saya melakukan percobaan di bawah tabel dan data berikut di SQL Server.

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

Hasil Char sama dengan Oracle.
Namun, dalam kasus Varchar, hasilnya berbeda antara Oracle dan SQL Server, spasi setelah atau sebelum string tampaknya diabaikan.

Oleh karena itu, perlu diperhatikan saat menggunakan varchar karena perbedaan antara Oracle dan SQL Server seperti di atas.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan dua tanggal waktu di sql server

  2. Gunakan TYPE_ID() untuk Mendapatkan ID Tipe Data di SQL Server

  3. Bagaimana cara mendapatkan Waktu dari format DateTime dalam SQL?

  4. Kueri server SQL untuk mendapatkan daftar kolom dalam tabel bersama dengan tipe Data, NOT NULL, dan batasan PRIMARY KEY

  5. Jenis Kursor SQL Server - Apa itu Kursor Statis di SQL Server | Tutorial SQL Server / Tutorial TSQL