Je travaillais sur une requête aujourd'hui qui m'a obligé à utiliser ce qui suit pour trouver toutes les valeurs d'ID de nombre impair
(ID % 2) <> 0
Quelqu'un peut-il me dire ce que cela fait? Cela a fonctionné, ce qui est excellent, mais j'aimerais savoir pourquoi.
ID % 2
vérifie le reste si vous divisez l'ID par 2. Si vous divisez un nombre pair par 2, il restera toujours un 0. Tout autre nombre (impair) donnera une valeur non nulle. Quel est ce qui est à la recherche.
Pour trouver le nombre pair, nous devrions utiliser
select num from table where ( num % 2 ) = 0
ID % 2
réduit tous les nombres entiers (les valeurs monétaires et numériques sont également autorisées) à 0 et 1 efficacement.
Lisez à propos de l'opérateur modulo dans le manuel .
Comme spécifié ci-dessous, spécifiez
dividende% diviseur
Renvoie le reste d'un nombre divisé par un autre.
https://docs.Microsoft.com/en-us/sql/t-sql/language-elements/modulo-transact-sql#syntax
Par exemple
13% 2 retour 1
La partie suivante est <>
qui indique Non égal.
Votre déclaration signifie donc Reste de l’ID lorsque divisé par 2, n’est pas égal à 0.
Attention, cela ne fonctionnera pas dans la base de données Oracle. Même expression sera comme ci-dessous.
MOD(ID, 2) <> 0
Il prend l'identifiant, le divise par 2 et vérifie si le reste n'est pas nul; ce qui signifie, c'est une identification étrange.
Dans Oracle,
select num from table where MOD (num, 2) = 0;
dividende% diviseur
Le dividende est l'expression numérique à diviser. Le dividende doit être toute expression de type de données entier dans le serveur SQL.
Le diviseur est l'expression numérique permettant de diviser le dividende. Le diviseur doit être une expression de type de données entier sauf dans le serveur SQL.
SELECT 15 % 2
Output
1
Dividende = 15
Diviseur = 2
Disons que vous vouliez interroger
Interrogez une liste de noms de villes de la station avec des numéros d'identification identiques.
Structure de schéma pour STATION:
ID Number
CITY varchar
STATE varchar
select CITY from STATION as st where st.id % 2 = 0
Will fetch the even set of records
In order to fetch the odd records with Id as odd number.
select CITY from STATION as st where st.id % 2 <> 0
La fonction% réduit la valeur à 0 ou 1
<> signifie pas égal. cependant, dans certaines versions de SQL, vous pouvez écrire! =