sql 中 int 类型型中转为二进制,查位数是否为真假

sql  里,  Int 转二进制 function

 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create  FUNCTION [dbo].[DecToBin](@Dec Int)
RETURNS VARCHAR(32)
AS
begin
 declare @BinStr as varchar(34)
 declare @Mod2 as int
 declare @Div2   as int

 

 set @Div2 = @Dec / 2
 set @Mod2 = @Dec % 2
 set @BinStr=''

 

 while @Div2<>0
 begin
  if @Mod2=0
   set @BinStr = @BinStr + '0'
  else
   set @BinStr = @BinStr + '1'
 
  set @Dec = @Dec / 2
  set @Div2 = @Dec / 2
  set @Mod2 = @Dec % 2
 end
 
 set @BinStr = @BinStr + '1'
 
 return REVERSE(@BinStr + right('00000000000000000000000000000000',32-len(@BinStr)))
end

 

 

位序

外设状态

GPRS

 

ST定位,天线,电源状态

高字一

高字二

低字一

低字二

7

1

 

1

ACC()

1

已差分定位

1

GPS已定位

6

1

 

1

 

收星数量

范围:0—15

D6 D5

1  1   GPS正常

1  0  GPS天线短路

0  1  GPS天线开路

0  0  GPS模块故障

5

1

 

1

 

4

1

 

1

 

D4 D3

1  1   电源正常

1  0   主电源掉电

0  1   主电源过高过低

3

1

 

1

 

2

1

 

1

 

1

 

D2 D1 D0

0  0  0 新协议标志

1  1  1 原协议标志

1

1

 

1

 

1

 

0

1

 

1

 

1

 

 

acc 在 高字节第七位.

用这种方法,在 sql 中也可判断位是否为零或 1

( TermStatu & 0x800000 ) = 0x800000

( TermStatu & 0x800000 ) != 0x800000

 

select * , substring(dbo.DecToBin(TermStatu),9,1) acc from gps_pos    where ( TermStatu & 0x800000 ) = 0x800000

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值