我需要一个表来记录数据模型中的所有类型。我没有那么多的类型,但是他们的公平交易。理想情况下,简短的描述性名称可以很好地工作。SQL Server char(1)和char(2)列
所以我这样做:
CREATE TABLE EntityType
(
EntityTypeID char(2) PRIMARY KEY,
EntityTypeName varchar(128) NOT NULL
)
并把一些数据表:
INSERT INTO EntityType VALUES ('A', 'Type1')
INSERT INTO EntityType VALUES ('B', 'Type2')
但是,我可以查询像这样令我感到困惑:
DECLARE @pEntityType char(1)
SET @pEntityType = 'A'
SELECT ''''+EntityTypeID+'''', EntityTypeName
FROM EntityType
WHERE EntityTypeID = @pEntityType
结果产生'A',并且该文字中有空格。
我的理解是,有是一个的转换CHAR(1)的隐式转换 - > CHAR(2)
我不是在抱怨,但什么是这背后的原理是什么?
好吧,我仍然没有抱怨,而且我确实觉得它很有用,但我确实发现它很奇怪......所有字符串比较都应该忽略拖尾空白的决定对我来说似乎仍然有些武断。 – 2010-10-07 18:52:27