更新列中的第二个数字

时间:2013-05-02 14:20:56

标签: sql sql-server-2005 sql-update sql-server-2000

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

诀窍是什么?

提前致谢!

2 个答案:

答案 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