개발/Database 15

MyBatis] 쿼리에서 특정 문자 제거 (if 사용시)

쿼리를 쓸 때 조건절을 동적으로 사용하는 경우가 많다. 그럴 때 문제가 되는게 연산자나 콤마의 제거이다. 그럴 때는 Mybatis의 trim 을 쓰면 된다. 두가지의 예를 들어보겠다. 1. 맨 끝에 있는 콤마(,)를 제거하는 경우 UPDATE AUTHORusername=#{username},password=#{password},email=#{email},bio=#{bio},WHERE id=#{id} 맨앞에 SET을 붙이고 if안에 무엇이 들어가도 맨 끝에 있는 콤마를 지우겠다는 것이다. 2. 맨 앞에 있는 연산자를(AND 또는 OR) 제거하는 경우 SELECT * FROM AUTHOR OR password=#{password}

개발/Database 2012.08.28

MySql] Insert Select 문

INSERT table1 (id, name, status, date) SELECT id, name, 'GOOD', now() /* id, name은 셀렉트된 값이고, 나머지 값은 임의로 넣은것 */ FROM table2 /* insert 의 테이블과 같아도 상관 없다 */ WHERE id=3 HAVING COUNT(*)=0 INSERT SELECT문을 한문장으로 정의하면 SELECT 된 값을 INSERT에 있는 테이블에 삽입하는 것이다. 먼저 SELECT 문을 보자. table2 라는 테이블에서 id가 3인 데이터가 있는지 없는지 검사하고 그 데이터가 몇개인가 검사해서 0개라면 SELECT 옆에있는 값들을 table1에 INSERT 한다.

개발/Database 2012.08.28

[MySql] 같은 컬럼의 행들에 한방에 update 하기

한 컬럼에 여러행들에 update를 한방에 업데이트 하는방법. 이런 경우 말이다. [ TABLE ]id name 1 사자 2 고양이 name컬럼의 값을id가 1이면 "lion"으로, id가 2이면 "cat"으로 바꾸고 싶다. 그럴땐 Case문을 쓰면된다. UPDATE TABLESETname = CASEWHEN id = 1 THEN "lion"WHEN id = 2 THEN "cat"ENDWHEREid IN (1, 2) 그럼 결과는 아래와 같이 나타난다. [ TABLE ] - 결과id name 1 lion 2 cat

개발/Database 2012.08.07

[MYSQL] 가져온 값을 조건에 따라 값 바꾸기(case - when - end 문)

집계 쿼리 만들 때 쓰이는 것... Group by 를 써서 데이터를 가져왔는데그 데이터는 숫자 코드로 되어있다(1 :사과 , 2: 포도) 숫자 코드는 보기 안좋으니까 글자로 바꾸려는데, 쿼리에서 조건문을 쓰려면 어떻게 할까? SELECTCODE,COUNT(*) AS COUNTFROM TESTWHEREDTTM = "20120802";GROUP BY CODE 가져와진 값이 아래와 같다고 치자 CODE COUNT 1 50 270 CODE가 1이면 사과의 합CODE가 2이면 포도의 합이라고 바꾸고 싶으면??? SELECTCASE CODE WHEN 1 THEN '사과의 합' ELSE '포도의 합' END, COUNT(*) AS COUNTFROM TESTWHEREDTTM = "20120802";GROUP BY C..

개발/Database 2012.08.02