0

如何将 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,但这也不是解决方案。

诀窍是什么?

提前致谢!

4

2 回答 2

2

对于 MSSQL,STUFF函数可能是最好的选择:

UPDATE INTERFACE
SET OptionBits = STUFF(OptionBits, 2, 1, '1')
WHERE ObjectNumber = 5
于 2013-05-02T14:40:06.233 回答
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
于 2013-05-02T14:25:49.477 回答