如何将16位数字中的第二位数字更新为“1”?
这应该是一个简单的,但我没有运气。
我正在使用SQL Server 2000和2005(多个环境 - 相同的数据库表)。
我在网上搜索了一些解决方案,发现其中一个显然可以在Oracle中运行,但SQL Server在运行时不喜欢管道符号:
UPDATE INTERFACE
SET OptionBits = substring(OptionBits,1,1)|| replace(substring(OptionBits,2,1), '0', '1')||substring(OptionBits,3, 14)
WHERE ObjectNumber = 5
我只想更新对象编号= 5的那个,如你所见。
我研究过使用Replace
,但这也不是解决方法。
诀窍是什么?
提前致谢!
答案 0 :(得分:2)
对于MSSQL,the STUFF
function可能是最佳选择:
UPDATE INTERFACE
SET OptionBits = STUFF(OptionBits, 2, 1, '1')
WHERE ObjectNumber = 5
答案 1 :(得分:0)
' ||'符号在Oracle中进行字符串连接。 SQL Server中的等效项是+
:
UPDATE INTERFACE
SET OptionBits = substring(OptionBits,1,1) + replace(substring(OptionBits,2,1), '0', '1') + substring(OptionBits,3, 14)
WHERE ObjectNumber = 5