【发布时间】:2012-09-13 06:14:16
【问题描述】:
我正在将我的数据从表 T 导出到 CSV 文件,T 有几个 varchar 列,在处理时,我不知道来自数据仓库的数据长度,所以我将长度设置为 500(假设),在导出到 csv 文件后,我注意到它根据列的长度在数据后放置了额外的空格。
我想要做的是将列长度更改为最大数据。所以有两个问题。
- 获取表中列内数据的最大长度。
-
使用变量更改列,以下代码不起作用,说明“'@l' 附近的语法不正确。”
DECLARE @l int SET @l = 12 ALTER TABLE Temp ALTER COLUMN a VarChar(@l)
【问题讨论】:
-
a) 听起来好像某处数据被视为
CHAR(x)而不是VARCHAR(x)。CHAR(x)如您所描述的,在末尾添加了填充空格。 b)我不建议改变列的长度。只需使用适当大的VARCHAR(x)(例如VARCHAR(500)或VARCHAR(MAX))并在某个适当的阶段执行RTRIM()。
标签: sql-server tsql