我正在传递一个简单的查询,在其中搜索特定行,其中OrderID
是偶数。
SELECT *
FROM Orders
WHERE mod(OrderID,2) = 0;
错误:
查询表达式中的语法错误(缺少运算符):“mod(OrderID,2) = 0”。
我正在传递一个简单的查询,在其中搜索特定行,其中OrderID
是偶数。
SELECT *
FROM Orders
WHERE mod(OrderID,2) = 0;
错误:
查询表达式中的语法错误(缺少运算符):“mod(OrderID,2) = 0”。
你没有使用Oracle,所以应该使用模数运算符:
SELECT * FROM Orders where OrderID % 2 = 0;
MOD()
函数存在于Oracle中,这可能让你感到困惑。
看一下这个SO问题,它讨论了你的问题。
SELECT * FROM Orders where OrderID % 2 = 0;///this is for even numbers
SELECT * FROM Orders where OrderID % 2 != 0;///this is for odd numbers
在Sql Server中,我们可以使用%通配符
select * from orders where ID % 2 = 0;
这可以在Mysql和Oracle中使用。使用模函数比%更有效。
select * from orders where mod(ID,2) = 0
MOD()函数在Oracle和MySQL中都存在,但在SQL Server中不存在。
在SQL Server中,可以尝试使用以下方法:
SELECT * FROM Orders where OrderID % 2 = 0;
--这是针对Oracle的
SELECT DISTINCT City FROM Station WHERE MOD(Id,2) = 0 ORDER BY City;
尝试这样做:
SELECT DISTINCT city FROM STATION WHERE ID%2=0 ORDER BY CITY;
对于SQL Server:
SELECT * FROM Orders where OrderID % 2 = 0;
//这是用于偶数
SELECT * FROM Orders where OrderID % 2 != 0;
//这是用于奇数
对于Oracle和MySQL,您必须使用MOD函数:
select * from orders where mod(ID,2) = 0
;With MYCTE(Empid)
As
(
SELECT * FROM employeeodd
)
Select *
From MYCTE
where empid % 2 = 0;
;With MYCTE(Empid)
As
(
SELECT * FROM employeeodd
)
Select *
From MYCTE
where empid % 2! = 0;
SELECT * FROM ( SELECT *, Row_Number()
OVER(ORDER BY country_gid) AS sdfg FROM eka_mst_tcountry ) t
WHERE t.country_gid % 2 = 0
在SQL中,所有这些选项都可以用于MOD
:
SELECT * FROM CITY WHERE MOD(ID,2) = 0 ORDER BY CITY;
或者
SELECT * FROM CITY WHERE ID % 2 = 0 ORDER BY CITY;
或者
SELECT * FROM CITY WHERE ID MOD 2 = 0 ORDER BY CITY;
希望能帮到你!
mod
函数。但是,OP 可以执行SELECT * FROM Orders WHERE OrderID % 2 = 0
。 - Tim