CREATE TABLE t1
(
c1 varchar(3),
c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('597', '597')
GO
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS 'Varchar Column',
REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS 'Char Column'
FROM t1
GOVarcgar Column Char Column
002 2
037 37
597 597为什么会返回不一样的值 ,一样的值,一样的写法。
就是类型不一样。
感觉 下面的内条语句 REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS 'Char Column'
并没有把‘0’当成字符型, 而是直接当成了。数字型0,所有才没有返回数据前面的0
求高手解答阿。
(
c1 varchar(3),
c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('597', '597')
GO
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS 'Varchar Column',
REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS 'Char Column'
FROM t1
GOVarcgar Column Char Column
002 2
037 37
597 597为什么会返回不一样的值 ,一样的值,一样的写法。
就是类型不一样。
感觉 下面的内条语句 REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS 'Char Column'
并没有把‘0’当成字符型, 而是直接当成了。数字型0,所有才没有返回数据前面的0
求高手解答阿。
DATALENGTH(c1) as c1len,
DATALENGTH(c2) as c2len
FROM t1char类型有尾随空格
代码更改为如下即可:CREATE TABLE t1
(
c1 varchar(3),
c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('597', '597')
GO
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS 'Varchar Column',
REPLICATE('0', 3 - DATALENGTH(rtrim(c2))) + c2 AS 'Char Column'
FROM t1drop table t1/*
Varchar Column Char Column
-------------- ------------
002 002
037 037
597 597(所影响的行数为 3 行)
*/