Câu trả lời:
Đó là toán tử Modulo .
Trả về phần còn lại của một số chia cho số khác.
% trong SQL có thể được sử dụng ở hai định dạng khác nhau. Nếu nó được sử dụng trong một chuỗi với LIKE
thì đó là một thẻ hoang dã, ví dụ:
WHERE col_name like '%test%'
Điều đó có nghĩa là tìm thấy mọi thứ trong col_name
đó có từ "kiểm tra" trong đó.
Nhưng trong hoạt động cụ thể này, ký hiệu% đang được sử dụng làm toán tử modulo. Modulo (trên một máy tính thường được hiển thị dưới dạng MODnút) trả về phần còn lại. Nó có thể là một công cụ khá hữu ích nếu sử dụng vòng lặp for để hiển thị dữ liệu và bạn muốn đếm các cột - Gần đây tôi đã sử dụng toán tử modulo khi vẽ lên một trang web. Của tôi là trong PHP, nhưng đây là một ví dụ:
$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++ ;
}
Điều này về cơ bản sẽ tạo ra 1 - 100 và cứ ba mục sẽ xuất ra "Ba mục" và cứ mười mục sẽ xuất ra "Mười mục" bởi vì bất kỳ số nào khác sẽ trả về một giá trị, ví dụ:
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 ;
sẽ cung cấp 0
SQL, không phải0.5
Các câu trả lời khác là chính xác. Đó là toán tử modulo, trả về phần còn lại của phép chia.
Nhưng tôi nghĩ có thể hữu ích khi thêm TẠI SAO nó là một hoạt động có liên quan và tại sao đôi khi nó có thể hữu ích.
Đây X % 2
là cái được sử dụng nhiều nhất vì nó trả về nếu số chẵn hoặc lẻ.
Hãy tưởng tượng rằng bạn muốn chọn tất cả các cột có số chẵn, bạn có thể làm:
SELECT * FROM table WHERE column % 2 = 0
Nếu bạn muốn chọn tất cả các cột có số lẻ, bạn có thể làm:
SELECT * FROM table WHERE column % 2 = 1
Các trường hợp sử dụng khác có thể phát sinh, ví dụ, bạn muốn lọc tất cả các cột theo đơn vị của chúng, bạn có thể sử dụng điều này để lấy tất cả các số có số 0 trong đơn vị của chúng:
SELECT * FROM table WHERE column % 10 = 0