SQL bit is false

本文关键字:false is bit SQL | 更新日期: 2023-09-27 18:25:32

我遇到了一个问题,在过去的一个小时里我一直在努力解决,但似乎无法解决。我试过在谷歌上搜索答案,但没有找到一个适合我的答案,或者至少我没能找到。

这是我的代码:

@foreach (var row in db.Query("SELECT * FROM PersonnelFiles WHERE (Badge LIKE '#1003' OR Badge LIKE '#1004' OR Badge LIKE '#1005' AND Archived is not true) ORDER BY Badge ASC"))
{
    <li>@row.Rank - @row.Name, @row.Badge</li>
}

因此,根据我有限的知识,它现在应该返回徽章像"#1003"、"#1004"或"#1005"的所有条目,前提是这些条目没有存档。

但在尝试这样做时,它给了我一个错误:"语法错误,近乎错误"。

我希望你能帮助我,提前谢谢你。

编辑:Archived是位数据类型。

SQL bit is false

SELECT * 
FROM PersonnelFiles 
WHERE (
         Badge LIKE '#1003' OR 
         Badge LIKE '#1004' OR 
         Badge LIKE '#1005' AND 
         Archived AND Archived <> 1
       ) ORDER BY Badge ASC

与相同

 SELECT * 
    FROM PersonnelFiles 
    WHERE (
             (Badge LIKE '#1003') OR 
             (Badge LIKE '#1004') OR 
             (Badge LIKE '#1005' AND Archived <> 1)
           ) ORDER BY Badge ASC

我猜你的意思是

 SELECT * 
        FROM PersonnelFiles 
        WHERE 
                 (
                    Badge LIKE '#1003' OR 
                    Badge LIKE '#1004' OR 
                    Badge LIKE '#1005'
                 ) AND Archived <> 1
                ORDER BY Badge ASC

se SQL逻辑运算符优先级:And And Or

试试这个:

SQL SERVER中没有类似false的东西位具有1或0值

@foreach (var row in db.Query("SELECT * FROM PersonnelFiles WHERE 
    (Badge LIKE '#1003' OR Badge LIKE '#1004' OR 
    Badge LIKE '#1005' AND Archived <>1) ORDER BY Badge ASC"))
{
    <li>@row.Rank - @row.Name, @row.Badge</li>
}

SQL SERVER数据类型