ฉันกำลังฝึกอบรมและสคริปต์ตัวใดตัวหนึ่งมีคำสั่งต่อไปนี้:
SELECT SUM(Col2) FROM clust_table WHERE Col1 % 3 = 1
ฉันต้องการทราบว่าตัวอย่างข้อมูลนี้มีไว้ในส่วนคำสั่ง WHERE: Col1 % 3 = 1
ฉันทำการวิจัยบนอินเทอร์เน็ตและไม่พบการอ้างอิงเกี่ยวกับคำสั่งนี้
ฉันกำลังฝึกอบรมและสคริปต์ตัวใดตัวหนึ่งมีคำสั่งต่อไปนี้:
SELECT SUM(Col2) FROM clust_table WHERE Col1 % 3 = 1
ฉันต้องการทราบว่าตัวอย่างข้อมูลนี้มีไว้ในส่วนคำสั่ง WHERE: Col1 % 3 = 1
ฉันทำการวิจัยบนอินเทอร์เน็ตและไม่พบการอ้างอิงเกี่ยวกับคำสั่งนี้
คำตอบ:
มันถูกใช้เป็นตัวดำเนินการ Modulo ส่งคืนเศษที่เหลือของตัวเลขหารด้วยอีกอัน
ในตัวอย่างของคุณ WHERE clause จะ จำกัด ผลลัพธ์เฉพาะที่ที่ค่า Col1 หารด้วย 3 จะเหลือ 1 เท่ากับ (เช่น 4,7,10 เป็นต้น)
มันเป็นผู้ประกอบการ Modulo
ส่งคืนส่วนที่เหลือของตัวเลขหนึ่งหารด้วยอีก
% ใน SQL สามารถใช้ได้ในสองรูปแบบที่แตกต่างกัน ถ้ามันถูกใช้ในสตริงด้วยLIKE
มันเป็นไวด์การ์ดตัวอย่างเช่น:
WHERE col_name like '%test%'
นั่นหมายถึงพบทุกสิ่งcol_name
ที่มีคำว่า "ทดสอบ" อยู่ในนั้น
แต่ในการดำเนินการเฉพาะนี้จะมีการใช้สัญลักษณ์% เป็นตัวดำเนินการโมดูโล Modulo (บนเครื่องคิดเลขโดยปกติจะแสดงเป็นMODปุ่ม) จะคืนค่าส่วนที่เหลือ มันอาจเป็นเครื่องมือที่มีประโยชน์มากหากใช้สำหรับ for loop เพื่อแสดงข้อมูลและคุณต้องการนับคอลัมน์ - ฉันเพิ่งใช้ตัวดำเนินการ modulo เมื่อวาดหน้าเว็บขึ้นมา Mine อยู่ใน PHP แต่นี่เป็นตัวอย่าง:
$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++ ;
}
โดยทั่วไปแล้วจะส่งออก 1 - 100 และทุกสามรายการมันจะส่งออก "สามรายการ" และทุกสิบรายการมันจะส่งออก "สิบรายการ" เพราะตัวเลขอื่น ๆ จะส่งกลับค่าเช่น:
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 ;
จะให้0
ใน SQL ไม่ใช่0.5
คำตอบอื่น ๆ นั้นถูกต้อง มันคือโอเปอเรเตอร์ของโมดูโล่ที่คืนค่าส่วนที่เหลือ
แต่ฉันคิดว่ามันอาจจะมีประโยชน์ในการเพิ่มเพราะมันเป็นการดำเนินการที่เกี่ยวข้องและทำไมบางครั้งมันอาจมีประโยชน์
X % 2
เป็นที่ใช้มากที่สุดเพราะมันจะกลับถ้าจำนวนเป็นคู่หรือคี่
ลองนึกภาพว่าคุณต้องการเลือกคอลัมน์ทั้งหมดที่มีตัวเลขสม่ำเสมอคุณสามารถทำได้:
SELECT * FROM table WHERE column % 2 = 0
หากคุณต้องการเลือกคอลัมน์ทั้งหมดที่มีตัวเลขคี่คุณสามารถทำได้:
SELECT * FROM table WHERE column % 2 = 1
กรณีการใช้งานอื่น ๆ สามารถเกิดขึ้นได้ตัวอย่างเช่นคุณต้องการกรองคอลัมน์ทั้งหมดตามหน่วยของพวกเขาคุณสามารถใช้สิ่งนี้เพื่อรับตัวเลขทั้งหมดที่มีศูนย์ในหน่วยของพวกเขา:
SELECT * FROM table WHERE column % 10 = 0