Sql SELECT中的嵌套大小写表达式
我在使用条件语句提取SELECT语句中的条件数据时遇到一些困难 如果值不为null,则进行外部条件检查;如果值包含特定的字符集,则进行内部条件检查 select语句:Sql SELECT中的嵌套大小写表达式,sql,tsql,Sql,Tsql,我在使用条件语句提取SELECT语句中的条件数据时遇到一些困难 如果值不为null,则进行外部条件检查;如果值包含特定的字符集,则进行内部条件检查 select语句: refID = CASE externalID WHEN IS NOT NULL THEN CASE internalType WHEN CONTAINS(internalType,'B1') THEN 'C1' + externalID WHEN CONTA
refID = CASE externalID
WHEN IS NOT NULL THEN CASE internalType
WHEN CONTAINS(internalType,'B1') THEN 'C1' + externalID
WHEN CONTAINS(internalType,'B2') THEN 'C2' + externalID
ELSE 'Ext'
END
ELSE 'N/A'
END
不幸的是,运行此代码会以错误消息“IS附近的语法不正确”结束。请将字段移到案例中
refID = CASE
WHEN externalID IS NOT NULL THEN
CASE
WHEN internalType like '%B1%' THEN 'C1' + externalID
WHEN internalType like '%B2%' THEN 'C2' + externalID
ELSE 'Ext'
END
ELSE 'N/A'
END
将字段移动到案例中
refID = CASE
WHEN externalID IS NOT NULL THEN
CASE
WHEN internalType like '%B1%' THEN 'C1' + externalID
WHEN internalType like '%B2%' THEN 'C2' + externalID
ELSE 'Ext'
END
ELSE 'N/A'
END
嗨
在这种情况下,您可以使用INSTR功能
refID = CASE externalID
WHEN IS NOT NULL THEN CASE internalType
WHEN INSTR(internalType,'B1') THEN 'C1' + externalID
WHEN INSTR(internalType,'B2') THEN 'C2' + externalID
ELSE 'Ext'
END
ELSE 'N/A'
END
INSTR-instring函数检查所需的字符串或模式,并处理数据。在这种情况下,您可以使用INSTR函数
refID = CASE externalID
WHEN IS NOT NULL THEN CASE internalType
WHEN INSTR(internalType,'B1') THEN 'C1' + externalID
WHEN INSTR(internalType,'B2') THEN 'C2' + externalID
ELSE 'Ext'
END
ELSE 'N/A'
END
INSTR-instring函数检查所需的字符串或模式,并处理数据大小写表达式,而不是语句。如果externalID不为NULL,则为Case…谢谢,但这只是将错误向前推到了“不正确的语法接近包含”执行类似的切换。您的意思是像吗?大小写表达式,not statement.case当externalID不为NULL时…谢谢,但这只是将错误向前推到“includes附近的语法不正确”执行类似的切换。你是说LIKE吗?@W.H我应该把那个放在那里,methinksThanks,它已经修复了它。不幸的是,无法使用CONTAINS,因为该表未编制索引。@W.H我应该把那个表放在那里,Methinkstanks,它已经修复了它。很遗憾,无法使用CONTAINS,因为该表未编制索引。您需要使用INSTR函数进行精确的模式检查。谢谢,太好了!很好。我很乐意帮助您。您需要使用INSTR功能进行精确的图案检查。谢谢,太好了!很好。我很乐意帮助你