0

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'です。それを行う方法(そしてmyvariableを維持する方法)は「12345」である必要があります

現在のものを削除して新しいものを作成できますか?

4

3 に答える 3

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になります。

アップデート

これを行う方法を私が知っている他の唯一の方法は、2次一時変数を使用することです。

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

変数が再度渡される場合は明らかにいくつかの制限がありますが、それを除けば、ソース変数の長さをより妥当な値に変更する以外の方法はありません。実際、このような小さなサイズの変数を使用する理由はあまりありません。

于 2012-08-15T14:18:51.290 に答える
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

変数の宣言方法を変更することはできないため、全体的な問題に対するこの試みられたアプローチをあきらめる必要があります(ただし、全体的な問題について説明していないため、提案はできません)。

于 2012-08-16T08:29:42.123 に答える
0

一時変数を使用できます:

DECLARE @MYVARIABLE AS VARCHAR(3)

DECLARE @myVal as VARCHAR(50)=@MYVARIABLE
于 2012-08-15T14:20:14.177 に答える