我正在尝试在 a 中构建一个 case/if 语句JOIN ON
clause.
LEFT JOIN [CTSTRC] [Statuses] ON RIGHT([Statuses].[STRID], 3) = [CTE].[F61]
问题是该列[Statuses].[STRID]
包含文本和数字。我将其与之比较的专栏[CTE].[F61]
是一个整数。
有没有办法检测是否列[Statuses].[STRID]
有一个字符或数字,然后如果是字符则将其设置为 0?
这是一个可以提供帮助的伪查询:
LEFT JOIN [CTSTRC] [Statuses]
ON RIGHT((
CASE [Statuses].[STRID]
WHEN TEXT THEN 0
ELSE CAST([Statuses].[STRID] AS INT) END), 3) = [CTE].[F61]
您正在寻找 IsNumeric 但它并不总是有效(+、- 和 . 是数字),因此您需要使用该解决方案GBN描述的即将 .0e0 添加到您的 varchar
LEFT JOIN [CTSTRC] [Statuses] ON
(CASE WHEN ISNUMERIC(RIGHT([Statuses].[STRID], 3) + '.0e0) = 1
THEN CAST(RIGHT([Statuses].[STRID], 3) AS INT)
ELSE 0 END) = [CTE].[F61]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)