Odpowiedzi:
To operator Modulo .
Zwraca resztę jednej liczby podzieloną przez drugą.
% w SQL może być używany w dwóch różnych formatach. Jeśli jest używany w ciągu znaków, LIKE
to jest to symbol wieloznaczny, na przykład:
WHERE col_name like '%test%'
Oznaczałoby to znaleźć wszystko, col_name
co zawiera słowo „test”.
Ale w tej konkretnej operacji symbol% jest używany jako operator modulo. Modulo (na kalkulatorze zwykle pokazanym jako MODprzycisk) zwraca resztę. Może to być bardzo przydatne narzędzie, jeśli używasz pętli for do wyświetlania danych, a chcesz liczyć kolumny - ostatnio przy tworzeniu strony internetowej użyłem operatora modulo. Mój był w PHP, ale to jest przykład:
$count = 0 ;
$records = array () ;
for ( $a = 0 ; $a < 100 ; $a++ )
$records[$a] = $a ;
foreach ( $records as $record )
{
if ( $count % 3 == 0 )
echo '<p>Three items</p>' ;
if ( $count % 10 == 0 )
echo '<p>Ten items</p>' ;
echo '<p>'.$record.'</p>' ;
$count++ ;
}
W rezultacie generowałoby to od 1 do 100, a co trzy pozycje generowałoby „Trzy elementy”, a co dziesięć elementów generowałoby „Dziesięć przedmiotów”, ponieważ wszelkie inne liczby zwracałyby wartość, np .:
5 / 10 = 0.5 (5 % 10 = 5)
2 / 3 = 0.666... (2 % 3 = 2)
50 / 10 = 5.0 (50 % 10 = 0)
9 / 3 = 3.0 (9 % 3 = 0)
select 5 / 10 ;
da 0
SQL, a nie0.5
Pozostałe odpowiedzi są poprawne. Jest to operator modulo, który zwraca pozostałą część podziału.
Ale myślę, że warto dodać DLACZEGO jest to istotna operacja i DLACZEGO czasem może być przydatna.
X % 2
Jest najczęściej używane jeden, ponieważ zwraca jeśli liczba jest parzysta lub nieparzysta.
Wyobraź sobie, że chcesz zaznaczyć wszystkie kolumny o liczbach parzystych, możesz:
SELECT * FROM table WHERE column % 2 = 0
Jeśli chcesz zaznaczyć wszystkie kolumny o liczbach nieparzystych, możesz:
SELECT * FROM table WHERE column % 2 = 1
Mogą wystąpić inne przypadki użycia, na przykład chcesz filtrować wszystkie kolumny według ich jednostek, możesz użyć tego, aby uzyskać wszystkie liczby, które mają zero w swoich jednostkach:
SELECT * FROM table WHERE column % 10 = 0