2016-08-16 85 views
-1

我有一块sql脚本,我将其输出设置为文本运行。 它返回的列设置为varchar(255),所以在文本输出中该列的宽度为255个字符。T-SQL到文本:根据需要设置列宽

我知道我可以使用

Cast(ColumnName As VarChar(75))) As ColumnName 

来限制它下降到75个字符的宽度,但我想实现的是,它会自动设置宽度返回最宽的结果。有谁知道这是否可能?

+0

您是指设置UI元素的宽度?你可以将它设置为'Max(Len(ColumnName))'。 – Serg

+0

“文本输出”是什么意思? 'VARCHAR(X)'是用于长度不超过X个字符的文本,所以你得到的值将正好是内容的长度,与'CHAR(X)'相反,其中每个值将*精确* X字符长,如果更短,填充空格。 –

回答

1

使用动态查询来实现结果。

查看下面的一个示例脚本。

CREATE TABLE #temp 
(Column1 VARCHAR(50)) 

INSERT INTO #temp (Column1) VALUES ('1111-123'),('15454454aa-4545') 

DECLARE @Delimit INT 
DECLARE @queryString VARCHAR(MAX) 

SELECT @Delimit=MAX(LEN(Column1)) FROM #temp --Getting the Length of largest column data 

SET @queryString='SELECT CAST(Column1 AS VARCHAR('+CONVERT(VARCHAR(50),@Delimit)+'))Column1 
        FROM #temp' 
EXEC(@queryString) 
+1

完美工作,只使用过一次动态SQL,但理解您的解决方案,谢谢 – Jeffrey