이 WHERE 절에서 %는 무엇을합니까?


13

나는 훈련을하고 있으며 스크립트 중 하나에는 다음 명령이 있습니다.

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

WHERE 절에서이 스 니펫이 무엇인지 알고 싶습니다. Col1 % 3 = 1

인터넷에서 조사한 결과이 명령에 대한 언급은 없습니다.

답변:


32

모듈로 연산자로 사용되고 있습니다. 나머지 숫자를 다른 숫자로 나눈 값을 반환합니다.

귀하의 예에서 WHERE 절은 Col1 값을 3으로 나눈 나머지가 1로 남는 결과로만 결과를 제한합니다 (예 : 4,7,10 등).



6

SQL에서 %는 두 가지 다른 형식으로 사용될 수 있습니다. 문자열로 사용되는 경우 LIKE와일드 카드입니다. 예를 들면 다음과 같습니다.

WHERE col_name like '%test%'

그것은 col_name"test"라는 단어가 들어 있는 모든 것을 찾는 것을 의미 합니다.

그러나이 특정 연산에서 % 기호는 모듈로 연산자로 사용됩니다. 모듈로 (일반적으로 MOD버튼 으로 표시된 계산기 )는 나머지를 반환합니다. for 루프를 사용하여 데이터를 표시하고 열을 계산하려는 경우 매우 유용한 도구가 될 수 있습니다. 최근 웹 페이지를 그릴 때 모듈러스 연산자를 사용했습니다. 광산은 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을 출력하고 3 개의 항목마다 "3 개의 항목"을 출력하고 10 개의 항목마다 "10 개의 항목"을 출력합니다. 다른 숫자는 다음과 같은 값을 반환하기 때문입니다.

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.가 아닙니다. 모듈로 나누는 숫자가 나누는 숫자보다 클 때 나머지를 반환합니다. 소수점 이하의 소수점 이하 자릿수는 mod의 출력과 관련이 없습니다.
Nick Dewitt

그리고 select 5 / 10 ;줄 것이다 0, SQL에없는0.5
ypercubeᵀᴹ

2

다른 답변은 맞습니다. 나머지 나누기를 반환하는 것은 모듈로 연산자입니다.

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

그러나 왜 관련 작업인지 왜 유용한 지 추가하는 것이 도움이 될 수 있다고 생각합니다.

X % 2숫자가 짝수 또는 홀수 인 경우는 반환하기 때문에 가장 많이 사용되는 것입니다.

짝수로 모든 열을 선택한다고 상상해보십시오.

SELECT * FROM table WHERE column % 2 = 0

홀수의 열을 모두 선택하려면 다음을 수행하십시오.

SELECT * FROM table WHERE column % 2 = 1

다른 유스 케이스가 발생할 수 있습니다 (예 : 단위로 모든 열을 필터링하려는 경우).이 값을 사용하여 단위가 0 인 모든 숫자를 얻을 수 있습니다.

SELECT * FROM table WHERE column % 10 = 0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.