0
CHAR行为,我希望查询的结果是:与下面给出的SQL语句结尾空格
|testX|5|
|XXXXX|5|
这是因为该列是char(5),我希望它插入由于插入的值少于5个字符,因此空白尾部空格可填充列中的剩余空间。但是,查询实际上产生以下结果:
|test|4|
|X|0|
有人可以请解释这一点。为什么没有用尾部填充的值填充长度5列?为什么当REPLACE函数是一个完全为空的字符串时,为第二个值插入单个X?
USE Test;
GO
SET ANSI_PADDING ON;
GO
CREATE TABLE BlankTest
(
Value char(5) NOT NULL
);
GO
INSERT INTO BlankTest (
Value
) VALUES (
'test'
);
GO
INSERT INTO BlankTest (
Value
) VALUES (
''
);
GO
SELECT REPLACE(Value, ' ', 'X'), LEN(Value)
FROM BlankTest;
GO
DROP TABLE BlankTest;
OK,但鉴于同样的数据,如果我做一个 SELECT * FROM BlankTest 值='test'; 我得到一行返回。我不应该收到零行,因为插入的值,填充,将'测试','测试'!='测试'。 – NYSystemsAnalyst 2009-11-18 15:06:36
太好了,谢谢。你有关于数据类型优先级的任何文档的链接吗?您为更高优先级放置的链接链接到与datalength和len上面的链接相同的问题,并没有讨论优先级问题。 – NYSystemsAnalyst 2009-11-18 15:43:12
哎呀,固定..... – gbn 2009-11-18 15:45:18