मेरे उत्तर को फिर से काम करने के लिए, LEN() ANSI_PADDING का परीक्षण करने के लिए असुरक्षित है क्योंकि इसे पिछली जगहों को छोड़कर लंबाई वापस करने के लिए परिभाषित किया गया है, और DATALENGTH() बेहतर है क्योंकि AdaTheDev कहता है।
दिलचस्प बात यह है कि ANSI_PADDING एक प्रविष्टि-समय सेटिंग है, और यह VARCHAR के लिए सम्मानित है लेकिन NVARCHAR के लिए नहीं।
दूसरे, यदि किसी स्तंभ को अनुगामी रिक्त स्थान के साथ लौटाते हैं, या समानता के लिए '=' का उपयोग करते हैं, तो ऐसा प्रतीत होता है कि अनुगामी स्थान का एक अंतर्निहित काट-छाँट होता है।
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