我的MSSQL中有下表。

itemNo        itemDesc                 ComponentType    Voltage
100001LF    CAP CER 10n 25V 20% 0805    CAPACITOR   NULL
100002LF    CAP CER 10n 50V 20% 1206    CAPACITOR   NULL
100008LF    CAP CER 100n 25V 20% 0805   CAPACITOR   NULL
100012LF    CAP CERAM 1n 25V 20% 0805   CAPACITOR   NULL
100013LF    CAP CER 100n 25V 20% 0805   CAPACITOR   NULL


现在,如何从itemDesc确定电压并将其输入到Voltage中?

注意:可以这样确定电压:搜索字母V,在看到空格之前先输入所有字符。

我最初的尝试是这样的:[但是,没有用:(]

UPDATE dbo.capacitor

SET [Voltage] = CASE WHEN CHARINDEX('% ', ItemDesc) > 0 THEN SUBSTRING(itemDesc, CHARINDEX['V ', ItemDesc], CHARINDEX['V ',ItemDesc]+2)
                      ELSE null
END


(我将C#用于编码。但是,我希望可以在SQL Server本身中完成此操作,而不是使用C#来获取每个记录,处理并将其放回去)。

最佳答案

UPDATE dbo.capacitor
SET [Voltage] = CASE WHEN CHARINDEX('% ', itemDesc) > 0 THEN SUBSTRING(itemDesc, CHARINDEX('n', itemDesc) + 1, CHARINDEX('V ',itemDesc) - (CHARINDEX('n', itemDesc) + 1))
ELSE null END
END

关于c# - 使用MSSQL中的子字符串更新操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20419675/

10-08 23:10