我必須通過使用業務規則來確保數據庫的有效性。 我用「選擇查詢」來瀏覽我桌子的每一行。 當一個錯誤被識別時,我將這個錯誤插入一個帶有消息的錯誤表中。SQL Server - Imbricate case return NULL
這是一個簡單的例子:
INSERT INTO SUPPLIER_ERR (numSupplier, nameSupplier,telephoneNumber, MESSAGE)
SELECT numSupplier,nameSupplier,telephoneNumber,
CASE
WHEN telephoneNumber = ''
then 'Must be filled'
When telephoneNumber NOT LIKE '+[0-9][0-9]([0-9][0-9])%'
then 'Must be to this format "+00(00)000000"'
END AS message
FROM dbo.supplier;
此解決方案的作品,但在某個時候我的錯誤表我有一個空消息行時我疊瓦狀外殼。 例如:
WHEN LEN(numCustomer,2) = 'CN'
then
Case
when (RTRIM(mailCustomer) LIKE '.')
THEN 'Must be x'
end
WHEN LEN(numCustomer) != 'CN' AND RTRIM(mailCustomer) != ''
THEN 'Must be empty'
我明白爲什麼我得到空消息(當它執行第一種情況下,不執行第二)
WHEN LEN(numCustomer,2) = 'CN'
then
Case
when (RTRIM(mailCustomer) LIKE '.')
THEN 'Must be x'
end
我的問題是:
我如何檢查我的信息是否爲空? (而不是插入到我的錯誤表中)
你可以有一個更多選擇 - 從當前選擇的情況中,where子句檢查**消息不爲空**。 – daniel
感謝您的幫助,我明白您對@Bridge回答的含義。 –