我必须通过使用业务规则来确保数据库的有效性。 我用“选择查询”来浏览我桌子的每一行。 当一个错误被识别时,我将这个错误插入一个带有消息的错误表中。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回答的含义。 –