调整SQL Varchar的大小
有没有办法在sql中调整本地varchar的大小 比如: 这将@MYVARIABLE的大小更改为50个字符 注意:我需要保留变量,因为我在之后使用它。 所以我不能用另一个 样本2:调整SQL Varchar的大小,sql,sql-server,sql-server-2005,resize,Sql,Sql Server,Sql Server 2005,Resize,有没有办法在sql中调整本地varchar的大小 比如: 这将@MYVARIABLE的大小更改为50个字符 注意:我需要保留变量,因为我在之后使用它。 所以我不能用另一个 样本2: DECLARE @MYVARIABLE AS VARCHAR(4) SET @MYVARIABLE = 'TEST' SET @MYVARIABLE = '12345' SELECT @MYVARIABLE 这里,MYVARIABLE的末尾为'1234'。应该是‘12345’ 如何做(并保持myvariable)
DECLARE @MYVARIABLE AS VARCHAR(4)
SET @MYVARIABLE = 'TEST'
SET @MYVARIABLE = '12345'
SELECT @MYVARIABLE
这里,MYVARIABLE的末尾为'1234'。应该是‘12345’
如何做(并保持myvariable)
我可以删除当前变量并创建一个新变量吗?首先将变量设置为您知道需要的最大大小,例如:
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
更新
我知道的唯一其他方法是使用辅助temp变量:
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
由于您无法更改变量的声明方式,因此您必须放弃这种试图解决总体问题的方法(但我不能提供建议,因为您没有描述总体问题)什么数据库系统,哪个版本??SQL只是结构化查询语言-一种被许多数据库系统使用的语言,但不是一种数据库产品。。。像这样的特性通常是特定于供应商的,所以我们确实需要知道您使用的是什么数据库系统……为什么要这样做,我可以理解为一个列,但变量很容易从一开始就更改。只需将其设置为您所需的最大值,或者如果它可能变得非常大,而您不知道它可能是什么大小,那么只需使用
NVARCHAR(MAX)
。alex,这是一个小补丁,它对变量的更改很小。但变量可能会更大。变量来自一个程序,该程序将var作为其内容的确切大小。我试着不去改变每一件事,只是改变varchar的大小。我可以删除它,然后用相同的名称但不同的定义重新创建一个新的吗?告诉你,我会用另一种方法来做我想做的。这是一个创建变量和其大小的程序。我无法控制,我不需要知道长度。我想输入var,比var的大小更大的值。我需要更改我使用var的每个地方。我尽量避免这样。
not declared?
abc