본문 바로가기

반응형

DataBase

(11)
MyBatis 마이바티스에서 조건절 쿼리에 와일드 카드 넣기 - 쿼리에 넣고 싶은 조건절 - 't' 라는 테이블이 있고, 그 테이블 안에 'name'이라는 칼럼이 있다. 이 'name'이라는 칼럼 값에 'myName'이 들어가는 데이터를 모두 뽑고 싶다. 그러면 아래와 같은 조건절을 넣어야 한다. where t.name = '%myName%' - MyBatis에서 와일드카드 넣기 : 문제점 - where t.name = '%myName%' 위와 같은 쿼리를 넣고 싶은데 어떻게 해야 하지? 일단 가장 먼저 생각난 방법은 아래였다. where t.name = '%#{searchText}%' -- 틀린 문법 위처럼 하면 우리가 원하는 대로 작동하지 않는다. MyBatis에서는 #{searchText} 자체에 앞뒤로 따옴표를 붙여주기 때문이다. 예를 들어서 searchT..
[PostgreSQL] 파일 이름이 콤마(,)를 기준으로 두 개로 나뉘는 문제 SELECT ARRAY_TO_STRING(ARRAY_AGG(attachfile.file_name), ',') FROM attachfile WHERE attachfile.seq_num = 163 - 220621
[SQL] inner join 을 써야 할 때와 left join 을 써야 할 때 / 차이 - INNER JOIN 은 양쪽 모두에 데이터가 있을 때만 - 테이블끼리 JOIN할 때는 보통 INNER JOIN 을 많이 사용한다. 하지만 LEFT JOIN도 잘 활용할 줄 알아야 한다. 예를 들어서 주문을 하면 주문 테이블에 데이터가 생성된다. 동시에 배송 테이블에도 기본값으로 데이터가 들어가지만, 반품 테이블에는 반품을 신청했을 때에만 데이터가 생성된다. 화면에 데이터를 들고 올 때는 주문 정보, 배송 정보, 반품 정보를 모두 들고 오고 싶다. 반품 정보가 있는지 없는지는 화면에서 처리하려고 한다. 이런 상황에서 반품 정보를 가져올 때 INNER JOIN 을 사용해서 가져오면 제대로 들고 오지 못한다. 이미 반품을 신청하여 반품 데이터가 있을 때만 들고 오기 때문이다. INNER JOIN 은 중심 ..
sql 날짜 비교 where 절 조건 넣을 때 주의할 점 - 문제 : date 자료형에 where 조건 적용 - sql 에서 WHERE 절로 검색 조건을 적용할 때, 날짜에 공백을 넣으면 제대로 작동하지 않는다. 예를 들어 SELECT * FROM tb_purchase p; 위는 결과가 제대로 나오지만 아래는 검색 결과가 하나도 나오지 않는다. SELECT * FROM tb_purchase p WHERE p.purdate '' --모든 결과 읽어옴 SELECT * FROM tb_purchase p WHERE p.purdate < '' --어떤 결과도 읽어오지 않음 위처럼 초기 화면으로 들어갔을 때는 결과가 여러 건 출력된..
참조하는 테이블에서 하위 항목이 몇 건인지 출력하는 법 tb_purchaseinfo (구매 상세 테이블)는 tb_purchase (구매 테이블)를 참조하고 있다. 구매 한 건에 구매 상세도 한 건인 데이터도 있고 구매 한 건에 구매 상세가 세 건인 데이터도 있다. 페이지에는 구매 데이터만 뿌리고, 그 중에서 구매 데이터를 하나 클릭하면 클릭한 구매 데이터를 참조하고 있는 구매 상세 데이터들을 불러와서 서브 테이블에 나열하려고 한다. SELECT p.pur_id, i.purinf_id, p.loginID FROM tb_purchase p INNER JOIN tb_purchaseinfo i ON p.pur_id = i.pur_id WHERE p.loginID = 'apple' GROUP BY i.pur_id 구매 데이터만 뿌릴 때, 페이징 처리도 해야 한다. 따..
가장 최근에 insert한 row의 pk 값 받아오기 (테이블을 참조해야 할 때) - 가장 최근에 입력된 row 불러오기 - 가장 마지막에 입력된 행의 PK값을 받아오려면 어떻게 해야 할까? 꼭 PK값이 아니더라도, 가장 최근에 insert 된 row에서 특정 값을 가져와야 하는 떄가 있다. 특히 참조 관계일 때 그렇다. 예를 들어 보자. '학생' 테이블은 '반' 테이블을 참고하고 있다. '반' 테이블에 '햇님반'을 하나 추가했다. '학생' 테이블에는 햇님반에 속하는 학생들을 여러 명 추가해야 한다. 다른 예를 하나 더 보자. '구매 상세' 테이블은 '구매' 테이블을 참조하고 있다. 구매가 한 건 일어나면, '구매' 테이블에 row가 하나 생긴다. 그리고 그 구매 안에 있는 상세 품목들마다 '구매 상세' 테이블에 row가 하나씩 들어간다. 이런 경우에, '햇님반' 하나를 두고 여러 학..
sql 특정 문자열을 포함하는지 확인하는 함수 contains (mySQL, Oracle) - JAVA에서 특정 문자열을 포함하는지 확인하기 - Java 에서 문자열을 포함하는지 여부를 확인하는 함수는 아래와 같다. string.contains("str"); //자바 코드 예시 String myStr = "Hello"; boolean isContain = myStr.contains("ell"); System.out.println(isContain); // true sql 로 자바의 contains 같은 기능을 수행하려면 어떻게 해야 할까? - SQL에서 특정 문자열을 포함하는지 확인하기 - database에서도 sql 쿼리를 날릴 때 어떤 문자열을 포함하는지 여부를 확인해야 할 때가 많다. 데이터를 불러올 때 모두 다 불러오는 것이 아니라 어떤 조건을 만족하는 데이터만 불러오고 싶을 때, 그 ..
mySQL 에서 insert into 구문 한 번에 여러 줄 추가하기 INSERT INTO tb_sales(sales_type,sales_nm,model_code,price,model_nm,photo,mfcomp,info) VALUES ("type1", "name1", "code1", "123456", "테스트1", null, "fct1", "info1"), ("type2", "name2", "code2", "223456", "테스트2", null, "fct2", "info2"), ("type3", "name3", "code3", "323456", "테스트3", null, "fct3", "info3"); mySQL에서 insert into 구문을 사용할 때 values 부분만 여러 줄 입력하면 한 번에 여러 행을 넣을 수 있다.

반응형