私は、700列以上の1000列のテーブルをいくつか持っています。SQL ServerのVARCHAR(MAX)より大きい値
今、私は私がPIVOT
/UNPIVOT
を使用して、いくつかのNULL
値があるならば、彼らはNULL
に変換され、空の文字列になっことが文句を言わないときのでISNULL(col1,0)
形式にこのテーブルからすべての列を表示したいです。だから私はこれらのNULL
を0
に置き換えようとしています。
この例では、sysobjects
テーブルを使用して、あなたのssmsで試すことができます。 VARCHAR(MAX)
でもNVARCHAR(MAX)
でも不十分です。ここで少数の行ではなくすべての行を取得するにはどうすればよいですか?
DECLARE @colsUnpivot VARCHAR(MAX)
SET @colsUnPivot = STUFF((
SELECT ',' + 'ISNULL(' + QUOTENAME(name) + ', 0) AS '
+ QUOTENAME(name)
FROM sysobjects t
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
PRINT @colsUnPivot
set @query = 'SELECT id,code_name,lkp_value
FROM
(
SELECT unitid,institution,city,state,zip, '+ @colsUnpivot+'
FROM sysobjects) AS cp
UNPIVOT (lkp_value for code_name IN ('[email protected]+')
) AS up'
--PRINT @Query
--PRINT @Query1
exec(@query)
私は上記のコードの意味は、意味がありませんが、私は私がここにsysobjectsを使用する必要がありますように私が持っている同じものを生産することはできません。
しかし、上記のコードはエラー投げている:
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near '('.
をそしてそこにそう多くのデータがあり、それが切り捨てられているためです。ここで
は、だから私はまだその切り捨てを考える
,ISNULL([opd_
、私のPRINTが言うことです。
はSSMSによって切り捨てあなた出力されますが、他のいくつかの問題に直面して?より詳細な情報を提供できますか?私はそれが劣悪な状態であることを非常に疑う。 – ajeh
'PRINT'と' SELECT'は大きな結果の*表示*を切り捨てますが、依然として完全な値を選択することができます。あなたはSSMSでそれを見ることができません。 – Siyual
彼らが言ったのは。 varchar(max)は最大2GBのデータになります。私はあなたがそこに行っていることを見ることができません。 – SMM