我遇到了过去一小时我一直试图解决的问题,而我似乎无法解决这个问题。我已经尝试使用谷歌搜索答案,但没有找到一个适用于我的情况,或者至少我还没有能够让它运作。
这是我的代码:
@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>
}
所以根据我的知识,这是有限的,它现在应该返回所有徽章类似的条目&#34;#1003&#34;,&#34;#1004&#34;或者&#34;#1005&#34;,只要这些不是存档的。
但是当尝试这样做时,它会给我一个错误:&#34;语法错误接近false&#34;。
我希望你能帮助我,提前谢谢你。
编辑: Archived是一种数据类型。
答案 0 :(得分:2)
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
答案 1 :(得分:0)
试试这个:
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>
}