【发布时间】:2013-04-26 18:32:52
【问题描述】:
如何将 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,但这也不是解决方案。
有什么诀窍?
提前致谢!
【问题讨论】:
-
列的命名表明您实际上将多个数据项存储在单个列中。这通常是一个坏主意,会导致这样的复杂查询。使用 SQL 支持存储多个项目的数据类型(表)会好得多。例如。
CREATE TABLE Options (ObjectNumber int, OptionPosition int, OptionSetting bit).
标签: sql sql-server-2005 sql-update sql-server-2000