2012-01-04 28 views
1

nvarchar(max)の列(col1)があります。SQL Server文字列が切り捨てられる

は、私は私はそれが起こっている理由は分からない、

DECLARE @my_string NVARCHAR(max) 
set @my_string = N'test' 

UPDATE dbo.tab1 
SET col1 = @my_string + ISNULL(col1, N'') 

運もしないしようとしています。 @marc_s

col1の文字列値が250文字後に切り捨てられます。これはSQL Server 2005と2008の両方で発生します。

+0

報告しているこの動作が表示されません。どのように、なぜあなたのコラムが250文字で切り捨てられると思いますか? –

+1

テーブルのトリガーはありますか? –

+0

トリガーがありません。コードはSQLプロシージャ内にあります。 – user1130456

答えて

2

まずは、あなたが報告しているこの動作が表示されません。どのように、なぜあなたのコラムが250文字で切り捨てられると思いますか?出力を切り捨てる可能性のあるデータを検査するツールを使用していますか?

あなたは、列の長さをチェックすることもできます

SELECT col1, LEN(col1) FROM dbo.tab1 

は、それだけで250文字まで実際にあります?

また、VARCHAR@my_string)とNVARCHARcol1)を混合していると、結果が乱れる可能性があります。これを避けてください!

次:NVARCHAR(MAX)が必要な場合は、他の文字列をその形式にキャストする必要があります。私のテストでは、私はこれを行う必要はありませんでした - - 多分それはあなたのケースで動作します私が言ったように

DECLARE @my_string NVARCHAR(200) 
set @my_string = N'test' 

UPDATE dbo.tab1 
SET col1 = CAST(@my_string AS NVARCHAR(MAX)) + ISNULL(col1, N'') 

はこれを試してみてください?

+0

私はtab1からlen(col1)を選択しました。250のチャレーターを持っています。また変更されました – user1130456

0

SSMSでテストしますか?その場合は、Query Results > SQL Server > Results to Grid - Maximum characters retrieved > Non XML dataのオプションをチェックインしてください。 250などの値がありますか?

+0

NO。値は65530です。私はSSMSとjavaアプリケーション(jdbc)から250だけを見ています – user1130456

+0

第2の推測:どのようなテーブルの定義ですか?何らかのチェック制約がありますか? CHECKと同様(DATALENGTH([col1])<= 250) – BartekR

2

は移動メニューに - クエリ - >クエリオプション - >結果 - >テキスト

オプションMaximun number of characters displayed in each columnあると私は256にデフォルト設定されました。

これを1000に設定すると、問題は解決されました。

関連する問題