簡體   English   中英

需要在 T-SQL 中驗證二進制數字的值

[英]Need to verify value in binary digit in T-SQL

這是我的問題。 例如,我有一個二進制數字 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)
)

使用substring()獲取 3d 數字並轉換為bit ,這將返回TrueFalse

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' ...

如果CYCLETYPE是一個字符串。
你的查詢邏輯可以這樣寫:

SET @EstHours = (
  SELECT SUM(ESTHOURS)
  FROM LABORMP
  WHERE  
    @PMID = PMID 
    AND 
    SUBSTRING(COALESCE(CYCLETYPE, '111'), 3, 1) = '1'
)

如果值為 varbinary,則可以使用按位和運算符 ( & )

DECLARE @binaryValue varbinary(7) = 0010010;

SELECT 1
WHERE @binaryValue & 0010000 = 0010000

嘗試這個:

SELECT 1
FROM yourtable
WHERE SUBSTRING(yourcolumn, 3, 1) = 1

如果第三位數字不是 1,您將得到一個空結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM