2011-01-25 6 views
1

テーブルの各列から無効なレコードを検索するクエリがあります。データ型の長さはすべての列で同じではありません。これは、LTRIMとRTRIMを使用するとエラーが発生するためです。 "列" SubscriberLastName "の型が、UNPIVOTリストで指定された他の列の型と競合し、その列をCASTしても結果はありません。LRTIMとRTRIMを使用して無効なレコードを見つけてエラーテーブルに挿入するにはどうすればよいですか?

誰でも助けてくれますか?

Insert into ErrorTable (------) select (-----) 
From (
      select [SubscriberDataId] 
      ,Case When ltrim(rtrim([SubscriberCode])) = '' Then [SubscriberCode] Else 'CorrectValue' end as [SubscriberCode] 
      ,Case When ltrim(rtrim([SubscriberLastName]))= '' Then [SubscriberLastName] Else 'CorrectValue' end as [SubscriberLastName] 
      ,Case When ltrim(rtrim([SubscriberFirstName]))= '' Then [SubscriberFirstName] Else 'CorrectValue' end as [SubscriberFirstName] 
      from Facets.SubscriberData) [sd] 
      Unpivot 
      (ErrorValue for FieldName in ([SubscriberCode], 
      [SubscriberLastName],[SubscriberFirstName])) as x 
      where x.ErrorValue <> 'CorrectValue' 

答えて

0

TYPEが長さだけでなく同じであることを確認する必要があります。

Insert into ErrorTable (------) select (-----) 
From (
      select [SubscriberDataId] 
      ,Case When ltrim(rtrim([SubscriberCode])) = '' Then CAST([SubscriberCode] AS NVARCHAR(MAX)) Else 'CorrectValue' end as [SubscriberCode] 
      ,Case When ltrim(rtrim([SubscriberLastName]))= '' Then CAST([SubscriberLastName] AS NVARCHAR(MAX)) Else 'CorrectValue' end as [SubscriberLastName] 
      ,Case When ltrim(rtrim([SubscriberFirstName]))= '' Then CAST([SubscriberFirstName] AS NVARCHAR(MAX)) Else 'CorrectValue' end as [SubscriberFirstName] 
      from Facets.SubscriberData) [sd] 
      Unpivot 
      (ErrorValue for FieldName in ([SubscriberCode], 
      [SubscriberLastName],[SubscriberFirstName])) as x 
      where x.ErrorValue <> 'CorrectValue' 
+0

こんにちは@Cyber​​kiwi、私はすでにそれを試みたが、私は結果が得られていません。私は3列のSubscriberDataId、ErrorValueとFieldNameを取得しており、3列はすべて空白です。 – Programmer

+0

これは何のためになるのですか? 、ケースの場合.... [SubscriberFirstName] からFacets.SubscriberData'(内部選択) - 質問に追加します。 – RichardTheKiwi

+0

SubscriberDataId(1、 2,3 ....)、SubscriberFirstName(CorrectValue、CorrectValue ....)の下に表示されます。 – Programmer