我有许多用户定义的标量函数,结果返回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将根据返回的字符串的长度动态调整?