只是一個奇怪的問題。我寫了下面的代碼使用CASE語句,但我沒有數據,所以我不知道我的邏輯是否正確。我所做的是我在每個領域應用長度檢查,如果它不匹配,然後把它放在錯誤表中。那麼,任何人都可以告訴我,我的邏輯是否正確?CASE聲明
查詢:
INSERT INTO
[Elig].[dbo].[ErrorTable]
(
[SeqId],
[CodeId],
[SubjectArea],
[FieldName],
[TableName],
[ErrorValue],
[ActiveFlag]
)
SELECT
[sd].[SuscriberDataId] AS [SeqId],
@InvalidLength AS [CodeId],
@SubjectArea AS [SubjectArea],
CASE WHEN len(ltrim(Rtrim([sd].[SubscriberNumber]))) > 9 THEN 'SubscriberNumber'
WHEN len(ltrim(Rtrim([sd].[SubscriberLastName]))) > 35 THEN 'SubscriberLastName'
WHEN len(ltrim(Rtrim([sd].[SubscriberFirstName]))) > 15 THEN 'SubscriberFirstName'
WHEN len(ltrim(Rtrim([sd].[SubscriberMiddleInitial]))) > 1 THEN 'SubscriberMiddleInitial'
WHEN len(ltrim(Rtrim([sd].[Sex]))) > 1 THEN 'Sex'
WHEN len(ltrim(Rtrim([sd].[Dob]))) > 8 THEN 'Dob'
WHEN len(ltrim(Rtrim([sd].[Ssn]))) > 9 THEN 'Ssn'
WHEN len(ltrim(Rtrim([sd].[FacetsGroup]))) > 8 THEN 'FacetsGroup'
END AS FieldName,
'Eligibility.SubscriberData',
CASE WHEN len(ltrim(Rtrim([sd].[SubscriberNumber]))) > 9 THEN [SubscriberNumber]
WHEN len(ltrim(Rtrim([sd].[SubscriberLastName]))) > 35 THEN [SubscriberLastName]
WHEN len(ltrim(Rtrim([sd].[SubscriberFirstName]))) > 15 THEN [SubscriberFirstName]
WHEN len(ltrim(Rtrim([sd].[SubscriberMiddleInitial]))) > 1 THEN [SubscriberMiddleInitial]
WHEN len(ltrim(Rtrim([sd].[Sex]))) > 1 THEN [Sex]
WHEN len(ltrim(Rtrim([sd].[Dob]))) > 8 THEN [Dob]
WHEN len(ltrim(Rtrim([sd].[Ssn]))) > 9 THEN [Ssn]
WHEN len(ltrim(Rtrim([sd].[FacetsGroup]))) > 8 THEN [FacetsGroup]
END AS ErrorValue,
@ActiveFlag AS [ActiveFlag]
FROM [Eligibility].[SubscriberData]
WHERE len(ltrim(Rtrim([sd].[SubscriberNumber]))) > 9 OR
len(ltrim(Rtrim([sd].[SubscriberLastName]))) > 35 OR
len(ltrim(Rtrim([sd].[SubscriberFirstName]))) > 15 OR
len(ltrim(Rtrim([sd].[SubscriberMiddleInitial]))) > 1 OR
len(ltrim(Rtrim([sd].[Sex]))) > 1 OR
len(ltrim(Rtrim([sd].[Dob]))) > 8 OR
len(ltrim(Rtrim([sd].[Ssn]))) > 9 OR
len(ltrim(Rtrim([sd].[FacetsGroup]))) > 8
感謝
你的問題是什麼? – Quassnoi 2011-01-20 14:51:18