【发布时间】:2010-12-17 21:38:30
【问题描述】:
鉴于下面的 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;
【问题讨论】:
标签: sql sql-server sql-server-2005 types