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

Mengapa SqlServer memilih pernyataan memilih baris yang cocok dan baris yang cocok dan memiliki spasi tambahan?

Untuk mengerjakan ulang jawaban saya, LEN() tidak aman untuk menguji ANSI_PADDING karena didefinisikan untuk mengembalikan panjang tidak termasuk spasi tambahan, dan DATALENGTH() lebih disukai seperti yang dikatakan AdaTheDev.

Yang menarik adalah bahwa ANSI_PADDING adalah pengaturan waktu penyisipan, dan dihormati untuk VARCHAR tetapi tidak untuk NVARCHAR.

Kedua, jika mengembalikan kolom dengan spasi tambahan, atau menggunakan '=' untuk kesetaraan, tampaknya ada pemotongan implisit spasi tambahan yang terjadi.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING OFF
GO
CREATE TABLE [dbo].[TestFeature1](
[Id] [varchar](50) NOT NULL,
[Leng] [decimal](18, 0) NOT NULL
) ON [PRIMARY]

GO

insert into TestFeature1 (id,leng) values ('1',100); insert into TestFeature1 (id,leng) values ('1 ',1000);

-- verify no spaces inserted at end
select '['+id+']', * from TestFeature1
select datalength(id), * from TestFeature1
go

DROP TABLE [dbo].[TestFeature1]
go
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING OFF
GO
CREATE TABLE [dbo].[TestFeature1](
[Id] [nvarchar](50) NOT NULL,
[Leng] [decimal](18, 0) NOT NULL
) ON [PRIMARY]

GO

insert into TestFeature1 (id,leng) values ('1',100); insert into TestFeature1 (id,leng) values ('1 ',1000);

-- verify spaces inserted at end, and ANSI_PADDING OFF was not honoured by NVARCHAR
select '['+id+']', * from TestFeature1
select datalength(id), * from TestFeature1
go


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah tipe yang ditentukan pengguna di SQL Server

  2. Tidak dapat menyelesaikan konflik pemeriksaan antara SQL_Latin1_General_CP1_CI_AS dan Latin1_General_CI_AS dalam operasi yang sama

  3. Mengapa EF menghasilkan kueri SQL dengan pemeriksaan nol yang tidak perlu?

  4. Cara Secara Proaktif Mengumpulkan Informasi Fragmentasi Indeks SQL Server

  5. Mengapa Prosedur Tersimpan lebih cepat daripada Query