【发布时间】:2016-06-04 03:27:09
【问题描述】:
我一直在阅读 char 与 varchar 的差异,我的理解是,如果 ANSI_PADDING 处于打开状态,我应该在查询时预期差异。例如,如果 ANSI_PADDING 处于打开状态,并且我将一列设置为 char(10),我希望当我插入列中时,比如说“a”,它将填充 9 个字符的空格。因此,我读到我不应该能够查询 'a' 的 char 列,但我需要查询 'a_________'(_ 代表空格)。无论如何,下面是一个我不希望返回结果的示例,但确实如此。我一辈子都无法创建一个根据 ANSI_PADDING 是否打开/关闭返回不同结果的示例。
SET ANSI_PADDING ON
DECLARE @table TABLE
(
[identity] int identity(1,1)
,[char] char(10)
,[varchar] varchar(10)
)
INSERT INTO @table
SELECT 'a', 'a'
SELECT * FROM @table
WHERE [char] = 'a' -- I expect this to not return results...
SELECT * FROM @table
WHERE [varchar] = 'a'
【问题讨论】:
标签: sql-server tsql