我的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
的电压并将其输入电压?
注意:电压可以这样确定:搜索字母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#来获取每个记录,处理并将其放回去。)
答案 0 :(得分:3)
我想在C#中会更容易,但这是一个可以在SQL中运行的解决方案。它会反转字符串并在空格后查找V并将所有内容移至下一个空格然后将其反转。
declare @desc as varchar(100) = 'CAP CER 10n 25V 20% 0805'
select REVERSE(SUBSTRING(REVERSE(@desc),
charindex(' V', REVERSE(@desc)) + 2,
CHARINDEX(' ', REVERSE(@desc), charindex(' V', REVERSE(@desc)) + 1) - charindex(' V', REVERSE(@desc)) - 2))
答案 1 :(得分:1)
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