updated_at: 2024-12-15 04:04

MySQL 연산자 ( 사칙연산, 비트연산, 논리연산 ) [퍼옮]

사칙연산

  • 예 : select (((3 + 2) * 4) / (2 - 1));
  • 주의 : 0 으로 나눌경우 NULL 반환한다. 연산은 BIGINT 의 결과값을 가지게 되므로 BIGINT 의 범위를 벗어나게 되면 잘못된 값을 반환한다.

비트연산

  • | : 비트연산 OR 의 연산자이다.

  • 예 : select 29 | 15;

  • & : 비트연산 AND 의 연산자이다.

  • 예 : select 29 & 15;

  • << : 비트연산 OR 의 연산자이다.

  • 예 : select 1 << 2;

  • : 비트연산 OR 의 연산자이다.

  • 예 : select 4 >> 2;

  • BIT_COUNT(N) : 해당 값의 비트수를 반환한다.

  • 예 : select BIT_COUNT(29);

  • 주의 : 연산은 BIGINT 의 결과값을 가지게 되므로 BIGINT 의 범위를 벗어나게 되면 잘못된 값을 반환한다.

논리연산

  • 주의 : 모든 논리연산은 1(TRUE) 또는 0(FALSE) 을 반환한다. 논리연산자는 우선순위가 높기 때문에 순서에 조심해야한다.

  • 예 : select ! 1+1; 이 문장은 select (! 1) + 1; 으로 연산된다.

  • ! : 논리연산 NOT 의 연산자이다. 0 이외의 모든 값은 TRUE 의 의미이다. 따라서 NOT 0 만이 1을 반환한다. 예외적으로 NOT NULL 은 NULL 을 반환한다.

  • 예 : select ! (100); select ! (1+1); select ! 1+1;

  • || : 논리연산 OR 의 연산자이다. 두개의 인자가 모두 0 또는 NULL 일 경우만 0 을 반환하고, 이외에는 1을 반환한다.

  • 예 : select 1 || 0; select 0 || 0; select 100 || NULL;

  • && : 논리연산 AND 의 연산자이다. 두개의 인자중 하나라도 0 또는 NULL 이 있을 경우 0 을 반환한다.

  • 예 : select 1 && NULL;

MySQL 내부연산 ( 비교연산 )

비교연산

  • 비교연산의 결과값은 1(TRUE), 0(FALSE), 또는 NULL 을 반환한다. 비교연산은 숫자와 문자열 모두에서 가능하다. 필요에 따라 자동적으로 숫자로 또는 문자열로 변환된다.

  • 두개의 인자 모두가 NULL 일 경우 연산의 결과값은 NULL 이 된다.

  • 두개의 인자 모두가 문자열이면 문자열로 비교된다.

  • 두개의 인자 모두가 숫자이면 숫자로서 비교된다.

  • 16진수는 숫자와 연산하지 않을 경우 바이너리로 처리된다.

  • 다른 대부분의 경우 연산은 floating-point 로 된다.

  • 기본적으로, 문자열 비교는 대소문자구분을 하지 않는다. 예 : select * from tbl_a where (a > 0) and (b <= 1);

  • expr BETWEEN min AND max

  • 예 : select 2 BETWEEN 2 AND '3';

  • expr IN (value,...)

  • 예 : select 'wefwf' IN (0,3,5,'wefwf');

  • expr NOT IN (value,...)

  • ISNULL(expr) : NULL 일 경우만 1(TRUE) 를 반환한다.

  • 예 : select ISNULL(1+1);

  • COALESCE(list) : NULL 이 아닌 첫번째 인자를 반환한다.

  • 예 : select COALESCE(2, ',한글', NULL, 1);

  • expr [NOT] REGEXP pat : 쿼리에서 정규표현식을 사용할수 있다. 사용할수 있다. 이것에 대해서는 나중에 설명한다.

  • expr RLIKE pat : REGEXP 와 같다.

  • STRCMP(expr1,expr2) : 두개의 문자열이 동일할경우 0, 첫번째 문자열이 정렬에서 상위일경우 -1, 그렇지 않으면 1을 반환한다.

= 같다 값 = 4

보다크다 값 > 60 < 보다작다 값 < 60 = 크거나 같다 값 >= 60 <= 작거나 같다 값 <= 60 != 혹은 <> 같지 않다 값 != 0 IS NOT NULL NULL을 가지지 않는다. IS NULL NULL 이다. BETWEEN 0에서 60 사이의 값 IN 어느 집합에 있는가 NOT IN 어느 집합에 있지 않은가 NOT IN LIKE 패턴대응 name like("값%") NOT LIKE 패턴대응 name not like("값%") REGEXP 정규표현 name regexp

MySQL 연산자 ( 형변환, 컨트롤함수 )

형변환 연산자

  • BINARY : 일반적인 문자열은 대소문자를 구분하지 않고 조건을 검색하지만 BINARY 를 사용할 이진연산을 하기때문에 대소문자 검색을 해야할 경우 편리하다.
  • 예 : select BINARY "a" = "A";

컨트롤 함수

  • IFNULL(expr1,expr2) : expr1 이 NULL 이 아니면 expr1 을 반환하고 그렇지 않을 경우 expr2 를 반환한다. 문자열, 숫자 모두 사용가능하다.

  • 예 : select IFNULL(1/0,10);

  • IF(expr1,expr2,expr3) : 만약 expr1 이 1(TRUE) 이면 expr2 를, 그렇지 않으면 expr3 을 반환한다.

  • 예 : select IF(1>2,2,3); select IF(strcmp('test','test1'),'yes','no');

  • CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END

  • 예 : SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END; SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;

평점을 남겨주세요
평점 : 2.5
총 투표수 : 1

질문 및 답글