mssql中对于bit类型字段的更新

mssql中对于bit类型字段的更新一直使用的是先判断再更新,这样就需要先查询一次,再执行更新. 忽然想到有没有可能直接对它进行更新,每次得到更新前的相反值. 首先想到的是用mid,后来发现mid再sql语句中不被支持. 资料显示:"mid是pb的函数,一般的数据库应该游substr函数"

后来找到"SUBSTRING"这个函数,用法何mid一样,于是就有了下面这种方法.

update anketo1 set fb = substring(10,fb+1,1) WHERE id =5

后来问了BM,BM说直接取反 update anketo1 set fb = ~ fb WHERE id =5 我告诉了BM用substring也可以. BM说:"这家伙厉害,这也能想出,这属于邪门武功."

最后又想到用ABS取绝对值也可以 update anketo1 set fb = abs(fb-1) 我觉得不管是什么武功,能制胜就是好的武功. 以上三种方法都是不错的方法.

附: SUBSTRING 返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。 语法 SUBSTRING ( expression , start , length ) 参数 expression 是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。 start 是一个整数,指定子串的开始位置。 length 是一个整数,指定子串的长度(要返回的字符数或字节数)。

Abs 函数 返回数字的绝对值。

Abs(number)

number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。

说明 数字的绝对值是其无符号的数值大小。例如,Abs(-1) 和 Abs(1) 都返回 1。

下面示例利用 Abs 函数计算数字的绝对值: Dim MyNumber MyNumber = Abs(50.3 ) 返回 50.3。 MyNumber = Abs(-50.3) 返回 50.3。

mssql中对于bit类型字段的更新一直使用的是先判断再更新,这样就需要先查询一次,再执行更新. 忽然想到有没有可能直接对它进行更新,每次得到更新前的相反值. 首先想到的是用mid,后来发现mid再sql语句中不被支持. 资料显示:"mid是pb的函数,一般的数据库应该游substr函数" 后来找到"SUBSTRING"这个函数,用法何mid一样,于是就有了下面这种方法. update anketo1 set fb = substring(10,fb+1,1) WHERE id =5 后来问了BM,BM说直接取反 update anketo1 set fb = ~ fb WHERE id =5 我告诉了BM用substring也可以. BM说:"这家伙厉害,这也能想出,这属于邪门武功." 最后又想到用ABS取绝对值也可以 update anketo1 set fb = abs(fb-1) 我觉得不管是什么武功,能制胜就是好的武功. 以上三种方法都是不错的方法. 附: SUBSTRING 返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。 语法 SUBSTRING ( expression , start , length ) 参数 expression 是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。 start 是一个整数,指定子串的开始位置。 length 是一个整数,指定子串的长度(要返回的字符数或字节数)。 Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。 说明 数字的绝对值是其无符号的数值大小。例如,Abs(-1) 和 Abs(1) 都返回 1。 下面示例利用 Abs 函数计算数字的绝对值: Dim MyNumber MyNumber = Abs(50.3 ) 返回 50.3。 MyNumber = Abs(-50.3) 返回 50.3。
经验分享 程序员 微信小程序 职场和发展