这就是我的问题所在。例如,我有一个二进制数0010010,我只需要验证从左到右的第三个值是1,我该如何在T-SQL中验证呢?
-- 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)
)
发布于 2019-03-26 00:19:55
使用
获取3d数字并转换为
,它将返回
或者
declare @binary varchar(8) = '00100010'
select CONVERT(bit, substring(@binary, 3, 1))
返回
True --1
和
declare @binary varchar(8) = '00000010'
select CONVERT(bit, substring(@binary, 3, 1))
返回
False --0
编辑
对于您的查询,您只需要:
...SUBSTRING(CYCLETYPE, 3, 1) = '1' ...
如果
是一个字符串。
您的查询逻辑可以这样编写:
SET @EstHours = (
SELECT SUM(ESTHOURS)
FROM LABORMP
WHERE
@PMID = PMID
AND
SUBSTRING(COALESCE(CYCLETYPE, '111'), 3, 1) = '1'
)
发布于 2019-03-26 00:25:09
如果该值为varbinary,则可以使用
按位and运算符(
)
DECLARE @binaryValue varbinary(7) = 0010010;
SELECT 1
WHERE @binaryValue & 0010000 = 0010000
发布于 2019-03-26 00:14:16
试试这个:
SELECT 1
FROM yourtable
WHERE SUBSTRING(yourcolumn, 3, 1) = 1
如果第三位数不是1,则结果为空
https://stackoverflow.com/questions/55341916
复制相似问题