我做错了什么?有没有更好的方法做到这一点,打破长度和字符串并将其转换为数值?我越来越varchar数值错误?
UPDATE VF_CasINV_Cost
SET TotWgt = CASE
WHEN (Dimension like '%x%') THEN
(cast(left(Dimension, charindex('X', Dimension, 1) - 1) as numeric)) *
(cast(substring(Dimension, 1 + charindex('X', Dimension, 1), len(Dimension)) as numeric))/144.00
WHEN TotWgt = 0 and [Wt/Ft] > 0 THEN (Dimension * [Wt/Ft]) * [Count]
WHEN TotWgt = 0 and [Wt/Sht] > 0 THEN ((Dimension * [Wt/Sht])/100) * [Count]
WHEN TotWgt = 0 and [Wt/Pc] > 0 THEN ((Dimension * [Wt/Pc])/100) * [Count]
ELSE TotWgt
END --TotWgt, Item#, TotWgt, [Wt/Ft], [Wt/Sht], [Wt/Pc], [Count], Dimension, TotWgt
FROM VF_CasINV_Cost
WHERE (CalendarYear = 2010) AND (Item# = Item#) AND (ID = ID) AND (Item# < 99999990)
AND K = 'K' AND D = '' AND C = '' AND (Unit = 'cwt' OR Unit = 'cwts')
你有GOT来简化它。我们不知道你的模式是什么样的,正在处理什么文本字符串等等。 – n8wrl
你应该提供一个表格模式,以便明确哪一种类型的列是 – sll