[英]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
,這將返回True
或False
:
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.