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

SQL Server 2008 String Kosong vs. Spasi

varchar s dan kesetaraan sangat sulit di TSQL. LEN fungsi mengatakan:

Mengembalikan jumlah karakter, bukan jumlah byte, dari ekspresi string yang diberikan, tidak termasuk trailing blank .

Anda perlu menggunakan DATALENGTH untuk mendapatkan byte yang sebenarnya jumlah data yang bersangkutan. Jika Anda memiliki data unicode, perhatikan bahwa nilai yang Anda dapatkan dalam situasi ini tidak akan sama dengan panjang teks.

print(DATALENGTH(' ')) --1
print(LEN(' '))        --0

Dalam hal persamaan ekspresi, kedua string tersebut dibandingkan untuk persamaan seperti ini:

  • Dapatkan string yang lebih pendek
  • Pad dengan kosong sampai panjangnya sama dengan string yang lebih panjang
  • Bandingkan keduanya

Ini adalah langkah tengah yang menyebabkan hasil yang tidak diharapkan - setelah langkah itu, Anda secara efektif membandingkan spasi putih dengan spasi putih - karena itu keduanya terlihat sama.

LIKE berperilaku lebih baik daripada = dalam situasi "kosong" karena tidak melakukan pengisian kosong pada pola yang Anda coba cocokkan:

if '' = ' '
print 'eq'
else
print 'ne'

Akan memberikan eq sementara:

if '' LIKE ' '
print 'eq'
else
print 'ne'

Akan memberikan ne

Hati-hati dengan LIKE meskipun:tidak simetris:ia memperlakukan spasi putih sebagai signifikan dalam pola (RHS) tetapi bukan ekspresi kecocokan (LHS). Berikut ini diambil dari sini:

declare @Space nvarchar(10)
declare @Space2 nvarchar(10)

set @Space = ''
set @Space2 = ' '

if @Space like @Space2
print '@Space Like @Space2'
else
print '@Space Not Like @Space2'

if @Space2 like @Space
print '@Space2 Like @Space'
else
print '@Space2 Not Like @Space'

@Space Not Like @Space2
@Space2 Like @Space


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:jumlah maksimum baris dalam tabel

  2. T-SQL:Bulatkan ke interval 15 menit terdekat

  3. Cara menghasilkan Pernyataan Sisipkan dari File Teks untuk Tabel SQL Server di SQL Server - Tutorial SQL Server / TSQL Bagian 106

  4. Generator data untuk server SQL?

  5. Tabel Pivot SQL Server dengan beberapa agregat kolom