【发布时间】:2025-12-27 09:50:17
【问题描述】:
我的代码如下所示,我找不到导致转换错误的原因。有人可以帮助确定问题吗?
[COLUMN_A] = CASE
WHEN [COLUMN_B] IS NOT NULL
AND [COLUMN_B] <> ''
AND CHARINDEX('MG', [COLUMN_B], 1) <> 0
THEN CONVERT(DECIMAL(8, 4), RTRIM(LEFT([COLUMN_B], CHARINDEX('MG', [COLUMN_B], 1)))
WHEN [COLUMN_B] IS NOT NULL
AND [COLUMN_B] <> ''
AND CHARINDEX('MCG', [COLUMN_B], 1) <> 0
THEN CONVERT(DECIMAL(8, 4), RTRIM(LEFT([COLUMN_B], CHARINDEX('MCG', [COLUMN_B], -1)))
WHEN [COLUMN_B] IS NOT NULL
AND [COLUMN_B] <> ''
THEN CONVERT(DECIMAL(8, 4), RTRIM([COLUMN_B]))
ELSE NULL
END
【问题讨论】:
-
你遇到了什么错误?
-
请提供样本数据。我猜这与您正在对字符串的外观以及实际可以在何处剪切字符串以产生小数的位置做出一些假设有关。
-
@Xedni - 没有可能的数据可以匹配 case 表达式的前两个分支并且是数字的。
标签: sql sql-server tsql type-conversion syntax-error