Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调整SQL Varchar的大小_Sql_Sql Server_Sql Server 2005_Resize - Fatal编程技术网

调整SQL Varchar的大小

调整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)

有没有办法在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 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