web-dev-qa-db-fra.com

Sélectionnez les lignes avec un identifiant ayant un numéro pair

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'.

10
solanki kaushik

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.

24
Tim Biegeleisen
SELECT * FROM Orders where OrderID % 2 = 0;///this is for even numbers

SELECT * FROM Orders where OrderID % 2 != 0;///this is for odd numbers
4

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;
1
mxuanlin
SELECT * FROM ( SELECT *, Row_Number() 
OVER(ORDER BY country_gid) AS sdfg  FROM eka_mst_tcountry ) t 
WHERE t.country_gid % 2 = 0 
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
0
Arun Solomon