现在的位置: 首页 > 综合 > 正文

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

2012年04月21日 ⁄ 综合 ⁄ 共 953字 ⁄ 字号 评论关闭

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。

抱歉!评论已关闭.