将varchar(max)转换为varchar(N)

时间:2015-12-22 15:22:15

标签: sql sql-server user-defined-functions

我有许多用户定义的标量函数,结果返回varchar(max)。因此,整列的varchar(max)即使只包含少量字符串也是如此。我需要将varchar(max)转换为varchar(N)以将它们用作索引。我必须这样做,因为varchar(max)上不允许索引。

是否可以轻松快捷地将表格中的所有varchar(max)列转换为varchar(N),其中N是变量的实际使用最大长度?您能否建议如何使用下面的代码遍历表中的所有varchar(max)列。最理想的是将表名作为参数的过程。

declare @SQL varchar(max);
declare @N varchar(max); 
set @N = (SELECT max(len([MyColumn])) FROM [dbo].[MyTable])
set @SQL='ALTER TABLE [dbo].[MyTable] ALTER COLUMN [MyColumn] VARCHAR (' + @N +')'

--select @SQL
exec (@SQL)

更新。或者,有没有办法强制标量UDF返回varchar(N),其中N将根据返回的字符串的长度动态调整?

0 个答案:

没有答案