2011-09-02 17 views
2

比方说,我有一个表格,其中包含int primary keyvarcharbit值。请记住,我实际上没有使用这样的东西,但它说明了我想要在SELECT声明中做什么。用于确定结果集中最低位值的T-SQL

仿表:

CREATE TABLE HorribleSample(
    Id INT IDENTITY(1,1) NOT NULL, 
    Code VARCHAR(6) NOT NULL, 
    IsTrue BIT NOT NULL, 
    CONSTRAINT PK_HorribleSample PRIMARY KEY CLUSTERED(Id ASC) 
) 

样本数据:

INSERT INTO HorribleSample VALUES('HELLO', 0) 
INSERT INTO HorribleSample VALUES('WORLD', 1) 
INSERT INTO HorribleSample VALUES('HELLO', 1) 
INSERT INTO HorribleSample VALUES('WORLD', 1) 

我试图做的是选择从结果集的最低位值。我以为我可以这样做:

SELECT MIN(IsTrue) 
FROM HorribleSample 
WHERE Code = 'HELLO' 

但我得到一个错误,指出我不能在bit场使用MIN

当代码是HELLO,我期望0,但是当它是WORLD我期望1。我怎样才能做到这一点?它甚至有可能吗?

回答

5

试试这个:

SELECT TOP 1 * 
    FROM HorribleSample 
WHERE Code = 'HELLO' 
ORDER BY IsTrue 
3

您需要的位投转换成int

CAST(IsTrue as int) 
1

像这样:

SELECT MIN(CAST(IsTrue AS INT)) 
FROM HorribleSample 
WHERE Code = 'HELLO' 

祝你好运!

相关问题