Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego miałby SqlServer select wybrać wiersze, które pasują i wiersze, które pasują i mają końcowe spacje?

Aby przerobić moją odpowiedź, LEN() nie jest bezpieczne testowanie ANSI_PADDING, ponieważ jest ono zdefiniowane w celu zwrócenia długości bez spacji końcowych, a DATALENGTH() jest preferowana, jak mówi AdaTheDev.

Co ciekawe, ANSI_PADDING jest ustawieniem czasu wstawiania i jest honorowane dla VARCHAR, ale nie dla NVARCHAR.

Po drugie, jeśli zwracasz kolumnę z końcowymi spacjami lub używasz „=” dla równości, wydaje się, że występuje niejawne obcięcie końcowej spacji.

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. Jaka jest wewnętrzna reprezentacja datetime w serwerze sql?

  2. Gdzie jest Analizator zapytań w SQL Server Management Studio 2008 R2?

  3. Jak uruchomić procedurę składowaną na serwerze sql co godzinę?

  4. SQL Server Error 111:„… musi być pierwszą instrukcją w partii kwerendy”

  5. Dodaj klauzule WHERE do SQL dynamicznie / programowo