有没有办法在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
由于您无法更改声明变量的方式,因此您将不得不放弃这种尝试来解决整体问题的方法(但我无法提供建议,因为您尚未描述整体问题)