Je passe une requête simple où je cherche des lignes spécifiques où OrderID
est un nombre pair
SELECT *
FROM Orders
WHERE mod(OrderID,2) = 0;
Erreur :
Erreur de syntaxe (opérateur manquant) dans l'expression de requête 'mod (OrderID, 2) = 0'.
Vous n'utilisez pas Oracle, vous devriez donc utiliser l'opérateur de module:
SELECT * FROM Orders where OrderID % 2 = 0;
La fonction MOD()
existe dans Oracle, source de votre confusion.
Regardez cette SO question qui traite de votre problème.
SELECT * FROM Orders where OrderID % 2 = 0;///this is for even numbers
SELECT * FROM Orders where OrderID % 2 != 0;///this is for odd numbers
La fonction MOD () existe à la fois dans Oracle et MySQL , mais pas dans SQL Server.
Dans SQL Server, essayez ceci:
SELECT * FROM Orders where OrderID % 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 Server on peut utiliser%
select * from orders where ID % 2 = 0;
Cela peut être utilisé aussi bien dans Mysql que dans Oracle . C’est plus affectueux d’utiliser la fonction mod que%.
select * from orders where mod(ID,2) = 0