ID Artikel: 316626 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

INF: Bagaimana membandingkan SQL Server string dengan spasi tambahan

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

SQL Server berikut spesifikasi ANSI/ISO SQL-92 (bagian 8.2, <comparison predicate="">, umum aturan # 3) tentang cara untuk membandingkan string dengan spasi. Standar ANSI memerlukan padding untuk karakter string yang digunakan dalam perbandingan sehingga panjang mereka cocok sebelum membandingkan mereka. Padding secara langsung mempengaruhi semantik di mana dan HAVING klausa predicates dan perbandingan string Transact-SQL lain. Sebagai contoh, Transact-SQL menganggap string</comparison>ABC'dan'ABC ' untuk menjadi setara untuk kebanyakan operasi perbandingan.

Satu-satunya pengecualian aturan ini adalah seperti predikat. Ketika sisi kanan logikal ekspresi seperti fitur nilai dengan trailing spasi, SQL Server tidak pad dua nilai untuk panjang yang sama sebelum perbandingan terjadi. Karena tujuan predikat seperti, menurut definisi, adalah untuk memfasilitasi pencarian pola daripada tes kesetaraan string sederhana, ini tidak melanggar bagian dari spesifikasi ANSI SQL-92 yang disebutkan sebelumnya.

INFORMASI LEBIH LANJUT

Pengaturan SET ANSI_PADDING tidak mempengaruhi Apakah SQL Server mengisi string sebelum itu membandingkan mereka. SET ANSI_PADDING hanya mempengaruhi Apakah trailing kosong dipangkas dari nilai-nilai yang dimasukkan ke dalam tabel, sehingga mempengaruhi penyimpanan tetapi tidak perbandingan.

Query berikut membantu untuk lebih lanjut menggambarkan konsep-konsep yang dijelaskan di bagian "Ringkasan" dari artikel ini:
CREATE TABLE #tmp (c1 varchar(10))
GO
INSERT INTO #tmp VALUES ('abc ')
INSERT INTO #tmp VALUES ('abc')
GO
SELECT DATALENGTH(c1) as 'EqualWithSpace', * FROM #tmp WHERE c1 = 'abc '
SELECT DATALENGTH(c1) as 'EqualNoSpace  ', * FROM #tmp WHERE c1 = 'abc'
SELECT DATALENGTH(c1) as 'GTWithSpace   ', * FROM #tmp WHERE c1 > 'ab '
SELECT DATALENGTH(c1) as 'GTNoSpace     ', * FROM #tmp WHERE c1 > 'ab'
SELECT DATALENGTH(c1) as 'LTWithSpace   ', * FROM #tmp WHERE c1 < 'abd '
SELECT DATALENGTH(c1) as 'LTNoSpace     ', * FROM #tmp WHERE c1 < 'abd'
SELECT DATALENGTH(c1) as 'LikeWithSpace ', * FROM #tmp WHERE c1 LIKE 'abc %'
SELECT DATALENGTH(c1) as 'LikeNoSpace   ', * FROM #tmp WHERE c1 LIKE 'abc%'
GO
DROP TABLE #tmp
				

REFERENSI

Untuk informasi tambahan tentang pengaturan ANSI_PADDING, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
154886  (http://support.microsoft.com/kb/154886/EN-US/ ) INF: Perilaku ANSI_PADDING
231830  (http://support.microsoft.com/kb/231830/EN-US/ ) INF: Penyisipan string yang berisi Trailing spasi
SQL Server buku secara Online

Delaney, Kalen. Di dalam Microsoft SQL Server 2000. Microsoft Press, 2000. Halaman 366-370.

Berlaku bagi:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Kata kunci: 
kbinfo kbmt KB316626 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:316626  (http://support.microsoft.com/kb/316626/en-us/ )