Bu WHERE yan tümcesinde% ne yapar?


13

Eğitim yapıyorum ve komut dosyalarından birinde aşağıdaki komut var:

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

Bu pasajın WHERE yan tümcesinde ne için olduğunu bilmek istiyorum: Col1 % 3 = 1

İnternette biraz araştırma yaptım ve bu komutla ilgili hiçbir referans bulamadım.

Yanıtlar:


32

Bir Modulo Operatörü olarak kullanılmaktadır; bir sayının geri kalanını diğerine bölerek.

Örneğinizde, WHERE yantümcesi sonuçları yalnızca Col1 değerinin 3'e bölündüğü değerlerle sınırlıyor (ör. 4,7,10 vb.)



6

% in SQL iki farklı formatta kullanılabilir. Bir dizede kullanılırsa, LIKEbir joker karakterdir, örneğin:

WHERE col_name like '%test%'

Bu, içinde col_name"test" kelimesinin bulunduğu her şeyi bulmak anlamına gelir .

Ancak bu özel işlemde% sembolü bir modulo operatörü olarak kullanılmaktadır. Modulo (normalde MODdüğme olarak gösterilen bir hesap makinesinde ) kalanını döndürür. Verileri görüntülemek için bir for döngüsü kullanıyorsanız ve sütunları saymak istiyorsanız oldukça kullanışlı bir araç olabilir - Son zamanlarda bir web sayfası oluştururken modulo operatörünü kullandım. Benimki PHP'deydi, ama bu bir örnek:

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

Bu temelde 1 - 100 ve her üç öğe için "Üç öğe" ve her on öğe için "On Öğe" verilecektir, çünkü diğer sayılar bir değer döndürür:

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)

2
2% 3 = 2, 6 değil .. modulo bölündüğünüz sayı bölündüğünüz sayıdan büyük olduğunda kalanını döndürür. Ondalık ile bölünmenin sondaki ondalık modunun mod çıktısı üzerinde bir etkisi yoktur.
Nick Dewitt

ve SQL'de select 5 / 10 ;verir 0, değil0.5
ypercubeᵀᴹ

2

Diğer cevaplar doğrudur. Bölümün geri kalanını döndüren modulo operatörüdür.

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

Ama neden ilgili bir işlem olduğunu ve neden bazen yararlı olabileceğini eklemek yararlı olabilir.

En X % 2çok kullanılanıdır, çünkü sayı çift veya tek ise geri döner.

Çift sayılı tüm sütunları seçmek istediğinizi düşünün, şunları yapabilirsiniz:

SELECT * FROM table WHERE column % 2 = 0

Tek sayı içeren tüm sütunları seçmek istiyorsanız, şunları yapabilirsiniz:

SELECT * FROM table WHERE column % 2 = 1

Diğer kullanım durumları ortaya çıkabilir, örneğin, tüm sütunları birimlerine göre filtrelemek istiyorsanız, bunu birimlerinde sıfır olan tüm sayıları almak için kullanabilirsiniz:

SELECT * FROM table WHERE column % 10 = 0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.