Respostas:
É o operador Modulo .
Retorna o restante de um número dividido por outro.
% em SQL pode ser usado em dois formatos diferentes. Se for usado em uma string LIKE
, é um curinga, por exemplo:
WHERE col_name like '%test%'
Isso significaria encontrar tudo em col_name
que contenha a palavra "teste".
Mas nesta operação específica, o símbolo% está sendo usado como um operador de módulo. Módulo (em uma calculadora normalmente mostrada como MODbotão) retorna o restante. Pode ser uma ferramenta bastante útil se você usar um loop for para exibir dados e quiser contar colunas - recentemente usei o operador modulo ao criar uma página da web. O meu estava em PHP, mas este é um exemplo:
$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++ ;
}
Basicamente, isso produziria de 1 a 100 e a cada três itens, "Três itens" e a cada dez itens, "Dez itens", porque quaisquer outros números retornariam um valor, por exemplo:
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 ;
cederá 0
em SQL, não0.5
As outras respostas estão corretas. É o operador do módulo, que retorna o restante da divisão.
Mas acho que pode ser útil adicionar POR QUE é uma operação relevante e POR QUE às vezes pode ser útil.
O X % 2
é o mais usado porque retorna se o número for par ou ímpar.
Imagine que você deseja selecionar todas as colunas com números pares, você pode:
SELECT * FROM table WHERE column % 2 = 0
Se você deseja selecionar todas as colunas com números ímpares, pode:
SELECT * FROM table WHERE column % 2 = 1
Outros casos de uso podem surgir, por exemplo, você deseja filtrar todas as colunas por sua unidade, pode usar isso para obter todos os números que têm zero em suas unidades:
SELECT * FROM table WHERE column % 10 = 0