[英]CHAR behavior with trailing spaces
给定下面的SQL语句,我希望查询的结果是:
|testX|5|
|XXXXX|5|
这是因为该列是char(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;
REPLACE返回varchar
尝试此SELECT
...REPLACE(Value, ' ', 'ZZZZZZZZZ')
当然不能是char(5),那是什么
...SQL_VARIANT_PROPERTY (REPLACE(Value, ' ', 'ZZZZZZZZZ'), 'MaxLength')...
8000,最大varchar ...
编辑:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.