调整 SQL Varchar 的大小



有没有办法在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"如何做到这一点(并保持我的变量)

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

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

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 

显然,如果变量再次传递,则存在一些限制,但除此之外,唯一的其他方法是将源变量长度更改为更合理的值。真的没有太多理由拥有如此小的变量。

您可以使用temp变量:

DECLARE @MYVARIABLE AS VARCHAR(3)
DECLARE @myVal as VARCHAR(50)=@MYVARIABLE

不可以,您不能更改变量的定义,也不能取消声明变量。它的定义是固定的,从声明它开始,直到批处理结束。

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

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

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

最新更新