it-swarm.com.de

Was macht% in dieser WHERE-Klausel?

Ich mache Training und eines der Skripte hat den folgenden Befehl:

SELECT SUM(Col2) FROM clust_table WHERE Col1 % 3 = 1

Ich würde gerne wissen, wofür dieses Snippet in der WHERE-Klausel gedacht ist: Col1 % 3 = 1

Ich habe im Internet recherchiert und keine Referenzen zu diesem Befehl gefunden.

13
Rafaells

Es wird als Modulo-Operator verwendet. Rückgabe des Restes einer durch eine andere geteilten Zahl.

In Ihrem Beispiel beschränkt die WHERE-Klausel die Ergebnisse nur auf diejenigen, bei denen der durch 3 geteilte Col1-Wert einen Rest von 1 ergibt (z. B. 4,7,10 usw.).

32
A. Folken

Es ist der Modulo-Operator .

Gibt den Rest einer Zahl geteilt durch eine andere zurück.

25
Erik Darling

% in SQL kann in zwei verschiedenen Formaten verwendet werden. Wenn es in einer Zeichenfolge mit LIKE verwendet wird, ist es ein Platzhalter, zum Beispiel:

WHERE col_name like '%test%'

Das würde bedeuten, alles in col_name mit dem Wort "test".

In dieser speziellen Operation wird das% -Symbol jedoch als Modulo-Operator verwendet. Modulo (auf einem Taschenrechner normalerweise dargestellt als MOD Schaltfläche) gibt den Rest zurück. Es kann ein nützliches Werkzeug sein, wenn Sie eine for-Schleife zum Anzeigen von Daten verwenden und Spalten zählen möchten. Ich habe kürzlich den Modulo-Operator beim Erstellen einer Webseite verwendet. Meins war in PHP, aber dies ist ein Beispiel:

$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++ ;
}

Dies würde im Grunde 1 - 100 ausgeben und alle drei Elemente würde es "Drei Elemente" ausgeben, und alle zehn Elemente würde es "Zehn Elemente" ausgeben, da jede andere Zahl einen Wert zurückgeben würde, z.

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)
6
TheKLF99

Die anderen Antworten sind richtig. Es ist der Modulo-Operator, der den Rest der Division zurückgibt.

  • 0% 3 = 0
  • 1% 3 = 1
  • 2% 3 = 2
  • 3% 3 = 0
  • 4% 3 = 1
  • 5% 3 = 2
  • ...

Aber ich denke, es könnte hilfreich sein, hinzuzufügen, WARUM es sich um eine relevante Operation handelt und WARUM es manchmal nützlich sein kann.

Das X % 2 wird am häufigsten verwendet, da es zurückgibt, wenn die Zahl gerade oder ungerade ist.

Stellen Sie sich vor, Sie möchten alle Spalten mit geraden Zahlen auswählen. Sie können Folgendes tun:

SELECT * FROM table WHERE column % 2 = 0

Wenn Sie alle Spalten mit ungeraden Zahlen auswählen möchten, haben Sie folgende Möglichkeiten:

SELECT * FROM table WHERE column % 2 = 1

Andere Anwendungsfälle können auftreten. Sie möchten beispielsweise alle Spalten nach ihrer Einheit filtern. Sie können dies verwenden, um alle Zahlen abzurufen, deren Einheiten Null enthalten:

SELECT * FROM table WHERE column % 10 = 0
2
Edu