我的 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# 获取每条记录、处理并将其放回)。
最佳答案
我想这在 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))
关于c# - MSSQL中子字符串的更新操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20419675/