首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >需要在T-SQL中验证二进制数的值

需要在T-SQL中验证二进制数的值
EN

Stack Overflow用户
提问于 2019-03-26 00:04:44
回答 3查看 76关注 0票数 0

这就是我的问题所在。例如,我有一个二进制数0010010,我只需要验证从左到右的第三个值是1,我该如何在T-SQL中验证呢?

代码语言:javascript
复制
-- Addded estimated hours field  

SET @EstHours = (SELECT SUM(ESTHOURS)
FROM LABORMP
WHERE  @PMID = LABORMP.PMID AND ( LEFT(CYCLETYPE,3) = 1 OR LABORMP.CYCLETYPE is null)
)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-26 00:19:55

使用

获取3d数字并转换为

,它将返回

或者

代码语言:javascript
复制
declare @binary varchar(8) = '00100010'
select CONVERT(bit, substring(@binary, 3, 1))

返回

代码语言:javascript
复制
True --1

代码语言:javascript
复制
declare @binary varchar(8) = '00000010'
select CONVERT(bit, substring(@binary, 3, 1))

返回

代码语言:javascript
复制
False --0

编辑

对于您的查询,您只需要:

代码语言:javascript
复制
...SUBSTRING(CYCLETYPE, 3, 1) = '1' ...

如果

是一个字符串。

您的查询逻辑可以这样编写:

代码语言:javascript
复制
SET @EstHours = (
  SELECT SUM(ESTHOURS)
  FROM LABORMP
  WHERE  
    @PMID = PMID 
    AND 
    SUBSTRING(COALESCE(CYCLETYPE, '111'), 3, 1) = '1'
)
票数 2
EN

Stack Overflow用户

发布于 2019-03-26 00:25:09

如果该值为varbinary,则可以使用

按位and运算符(

)

代码语言:javascript
复制
DECLARE @binaryValue varbinary(7) = 0010010;

SELECT 1
WHERE @binaryValue & 0010000 = 0010000
票数 1
EN

Stack Overflow用户

发布于 2019-03-26 00:14:16

试试这个:

代码语言:javascript
复制
SELECT 1
FROM yourtable
WHERE SUBSTRING(yourcolumn, 3, 1) = 1

如果第三位数不是1,则结果为空

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55341916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档