2011-11-11 13 views
18

stavo lavorando su una domanda di oggi, che mi ha richiesto di utilizzare il seguente per trovare i valori tutti i numeri dispari IDTrovare pari o dispari ID valori

(ID % 2) <> 0 

Qualcuno può dirmi che cosa questo sta facendo? Ha funzionato, il che è fantastico, ma mi piacerebbe sapere perché.

+0

(ID% 2) = 0 per la selezione di numeri pari – anandharshan

risposta

31

ID % 2 sta controllando il resto è se dividi ID per 2. Se dividi un numero pari per 2 avrà sempre un resto di 0. Qualsiasi altro numero (dispari) genererà un valore diverso da zero. Qual è il motivo per cui viene verificato.

+0

eccezionale. Questo è esattamente ciò di cui avevo bisogno. Grazie! – Phoenix

2

Sta prendendo l'ID, dividendolo per 2 e controllando se il resto non è zero; nel senso, è un ID strano.

7

Per trovare il numero pari dobbiamo usare

select num from table where (num % 2) = 0 
-1

In Oracle,

select num from table where MOD (num, 2) = 0; 
0

dividendo% divisore

dividendo è l'espressione numerica da dividere. Dividendo deve essere qualsiasi espressione del tipo di dati intero in sql server.

Divisore è l'espressione numerica per dividere il dividendo. Il divisore deve essere espressione del tipo di dati intero tranne nel server sql.

SELECT 15 % 2 

Output 
1 

Dividendo = 15

Divisore = 2

Diciamo che si voleva interrogare

Query un elenco di nomi di città dalla stazione con soli anche i numeri ID.

struttura Schema 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 

funzione% riduce il valore di 0 o 1

+0

Questa domanda sta cercando una * spiegazione *, non semplicemente per esempi di codice aggiuntivi. La tua risposta non fornisce informazioni sull'interrogante e potrebbe essere cancellata. Si prega di [modificare] per * spiegare * come il confronto seleziona numeri dispari. –

-1

<> significa non uguale. tuttavia, in alcune versioni di SQL, è possibile scrivere! =

0
for even: 
select * from tablename where columname/2 not like '%.%'; 
for eg: 
select sal from emp where sal/2 not like '%.%'; 
for odd; 
select * from tablename where columname/2 like '%.%'; 
select sal from emp where sal/2 like '%.%'; 
+1

Questo non risponde alla domanda, e anche se così fosse, non c'è alcun contesto o spiegazione del codice. Le risposte di solo codice non sono generalmente utili. – WillardSolutions

0

come sotto doc specificare

dividend% divisor

Restituisce il resto di un numero diviso per un altro.

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/modulo-transact-sql#syntax

Per esempio

13% 2 ritorno 1

parte successiva è <> che denota Non uguale.

Perciò quello che la sua dichiarazione significa è Resto di ID quando diviso per 2 non è uguale a 0

Fate attenzione perché questo non sta andando a lavorare in database Oracle. La stessa espressione sarà come sotto.

MOD(ID, 2) <> 0 
Problemi correlati