调整SQL Varchar的大小

时间:2012-08-15 14:09:30

标签: sql sql-server sql-server-2005 resize

有没有办法在sql中调整本地varchar的大小?

像:

DECLARE @MYVARIABLE AS VARCHAR(3)
REDIM @MYVARIABLE(50)

这会将@MYVARIABLE的大小更改为50个字符。

注意:我需要保留变量,因为我之后使用它。 所以我不能再使用另一个。

样本2:

DECLARE @MYVARIABLE AS VARCHAR(4)
SET @MYVARIABLE = 'TEST'
SET @MYVARIABLE = '12345'
SELECT @MYVARIABLE

这里,最后MYVARIABLE ='1234'。应该是'12345' 该怎么做(并保持我的变量)

我可以删除当前的并创建一个新的吗?

3 个答案:

答案 0 :(得分:1)

将变量设置为您知道首先需要的最大尺寸,例如:

DECLARE @MYVARIABLE AS NVARCHAR(50)

或者,如果您不知道自己需要多大,那么您可以随时使用MAX:

DECLARE @MYVARIABLE AS NVARCHAR(MAX)

如果变量的长度对你很重要,那么你可以在赋值后得到它:

DECLARE @MYVARIABLE AS NVARCHAR(MAX)
DECLARE @LENGTHOFMYVARIABLE AS INT
SET @MYVARIABLE = 'somerandomtext'
SET @LENGTHOFMYVARIABLE = LEN(@MYVARIABLE)

在这种情况下,@LENGTHOFMYVARIABLE将是14。

<强>更新

我知道如何执行此操作的唯一方法是使用辅助临时变量:

DECLARE @MYVARIABLE AS NVARCHAR(3)
DECLARE @MYBIGGERTEMPVARIABLE AS NVARCHAR(50)
SET @MYBIGGERTEMPVARIABLE = @MYVARIABLE 

显然,如果变量再次传递有一些限制,但除此之外,唯一的另一种方法是将源变量长度更改为更合理的值。实际上,没有太多理由让变量如此小。

答案 1 :(得分:0)

你可以使用临时变量:

DECLARE @MYVARIABLE AS VARCHAR(3)

DECLARE @myVal as VARCHAR(50)=@MYVARIABLE

答案 2 :(得分:0)

不,你不能改变变量的定义,也不能取消变量。从声明的角度来看,它的定义是固定的,直到批处理结束。

如果声明似乎没有运行,它的定义甚至会生效:

if 1 = 0
begin
    declare @a varchar(3)
    print 'declared!'
end
else
begin
    print 'not declared?'
end
set @a = 'abc'
print @a

打印:

not declared?
abc

由于你无法改变声明变量的方式,你将不得不放弃这种尝试的方法解决你的整体问题(但我不能提供建议,因为你没有描述你的整体问题)