[MariaDB] 문자열 데이터 길이 재는 법
타입이 VARCHAR(20) 인 데이터의 문자열 길이 재는법 count 사용 시 아래와 같은 에러 메세지가 발생한다.count 대신 length 를 사용해주면 된다.SELECT LENGTH(컬럼명) FROM 테이블명
타입이 VARCHAR(20) 인 데이터의 문자열 길이 재는법 count 사용 시 아래와 같은 에러 메세지가 발생한다.count 대신 length 를 사용해주면 된다.SELECT LENGTH(컬럼명) FROM 테이블명
프로시저의 수정 이력을 확인해야 하는 일이 생겼다.INFORMATION_SCHEMA.ROUTINES 에서 프로시저의 생성일, 최근 수정일이 확인 가능하다. SELECT ROUTINE_NAME, LAST_ALTEREDFROM INFORMATION_SCHEMA.ROUTINESWHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = '프로시저명';
SQL 쿼리문에서 나온 검색결과 100+ 개중 가장 최신의 1개만 보여주고 싶을때 어떻게 해야할까?LIMIT 숫자 를 사용하면 검색 결과를 숫자대로 자를 수 있다.SELECT * FROM TEST_TABLE A LIMIT 1; 여기에 ORDER BY 도 같이 사용하여 최신의 파일 순서대로 정렬하여 원하는 데이터를 선택한다.SELECT * FROM TEST_TABLE A ORDER BY INS_DATE DESCLIMIT 1; LIMIT 옆의 숫자에 따라 나오는 개수가 달라진다. 10개만 나오게 하고싶으면 10, 5개만 나오게 하고싶으면 5 입력.SELECT * FROM TEST_TABLE A ORDER BY INS_DATE DESCLIMIT 10;
reload in encoding명 ... 버튼을 선택해야 하는 것을 실수로 set project encoding .. 을 선택했다. 기존에 파일 인코딩이 엉망이어서 ... 이런 실수가 발생했다. sql 파일 생성 시 기본 인코딩이 x-windows-949 로 지정되는 문제가 발생했다. 처음에는 괜찮았는데, 일이 바빠 의식하지 못하니 x-windows-949 로 커밋을 해버리는 일이 자주 발생하게 되었다. 사실 실수하면 커밋 두번 하면 되고 처음부터 신경써주면 돼서 큰 문제는 아니긴 한데, 커밋할때마다 화면명/화면코드/내용 작성하는게 너무 귀찮아졌다! 시간이 지날수록 신경써주는게 어려워져서 결국 해당 문제를 해결하려고 한다. 프로젝트 인코딩 변경방법왼쪽 File > Settings > File Enco..
SQL 문에서 파라미터가 null 로 넘어올 경우 해당 조건을 쿼리문에서 제외하려면 어떻게 해야할까?아래의 쿼리문에서 iDEPARTMENT 가 NULL 로 넘어올 경우 해당 조건이 NULL 인 TEST_TABLE 의 결과만 나오게 된다. 그러면 DEPARTMENT 를 같이 넘길때만 검색조건으로 추가하고 싶을 경우가 있을 것이다. -- iNAME, iDEPARTMENTSELECT *FROM TEST_TABLEWHERE NAME = iNAME AND DEPARTMENT = iDEPARTMENT 검색조건으로 iDEPARTMENT 를 넘길 경우, 검색조건에 문자를 입력하지 않으면 NULL 로 넘어간다.이때 쿼리문에 NULL 로 넘어올 경우에 대한 처리문을 추가해주면 된다. -- iNAME, iDEPARTMENT..
SUBSTRING이란substring은 문자열을 자르기 위해 사용하는 함수이다. DataBase 시스템마다 문법이 조금 다를 수 있다. SUBSTRING(문자열, 시작위치, 길이)LEFT(문자열, 길이)RIGHT(문자열, 길이) SUBSTRINGSUBSTRING 은 지정한 시작위치에서 길이만큼 자를때 사용한다.예를 들어, SUBSTRING('TEST TEST SUBSTRING',6,4) 의 경우 6번째 자리인 T부터 길이 4까지인 TEST까지 자른다.TEST TEST (생략)12345678910(...) 시작 1234 LEFT왼쪽에서부터 지정한 길이만큼 자른다. RIGHT오른쪽에서부터 지정한 길이만큼 자른다.
오늘날짜CURDATE()CURRENT_DATENOW()SYSDATE() * CURDATE() 와 CURRENT_DATE 의 차이두 함수는 기능적으로 동일하지만, 사용 방식에 차이가 있다. CURDATE() 는 함수 형태로 사용되며 괄호를 사용하여 호출해야한다. CURRENT_DATE는 키워드 형태로 사용되며 괄호 없이 사용할 수 있다. 따라서 기능적으로는 동일하므로 개인의 선호에 따라 선택하여 사용하면 된다. * CURDATE() 의 인자값CURDATE() 는 인자값을 받지 않기 때문에 괄호 안에 어떠한 값도 넣으면 안된다. * SYSDATE() 와 NOW() 의 차이SYSDATE() 는 날짜 조회를 기준으로 날짜 및 시간을 반환한다. 호출할 때마다 현재 시각을 반영하기 때문에, 같은 트랜잭션 내에..
나의 경우에 auto-commit 을 해제해놓고 여러 script 및 테이블에서 데이터 작업중이었다.DBeaver 을 사용중이었는데, DBeaver 을 껐다가 키면 해당 에러 없이 다시 작동하였다. 일주일 내내 해당 오류와 씨름하고 서칭했다.wait 시간을 늘리는 등의 작업은 나에게 DB 설정 수정권한이 없었고, 확인해보니 이미 기간이 8천인가 8만? 환산해보니 24시간으로 되어있어 해당 시간을 늘리는 작업은 DB 관리자분께 요청하지 않았다. 원인내 케이스에는 Manual Commit 으로 설정해놓고 여러 스크립트에서 동시에 작업해서 그런 것 같다. 해결방법커밋을 전부 Auto Commit 으로 변경하고 작업하니 해당 에러가 발생하지 않았다. 한 테스트 문서에서 힌트를 얻었었는데, 급한 업무여서 빠르게..
DB 작업을 진행할땐 보통 Auto Commit 을 해제한다. Auto Commit 은 DB 수정 시 (추가, 삭제, 수정 등의 작업) 바로 적용이 되도록 도와주는 기능이기 때문이다. Auto Commit 을 해제해두면 실수로 수정하면 안되는 데이터를 수정하는 등의 경우에서 한번 더 기회를 받을 수 있다. 상단 윈도우 > 설정 > 환경설정 > 연결 > 연결 유형 > Auto-commit by default 선택지 해제바로 Auto Commit 해제가 가능해진다. 더 간단한 방법은 롤백 우측의 아이콘을 클릭해 커밋 방법을 변경하는 것이다. 그런데 이건 일회로만 적용되는 것 같다. 과거 커밋 기록을 확인하고 싶을때는 초록색 배경을 클릭하면 된다. 그럼 이와같이 Transaction log 가 나타나는..
아래와 같은 경우에, STUDENT_ID 로 묶어서 SUBJECT 값들을 출력하고 싶으면 어떻게 해야할까?STUDENT_ID | NAME | SUBJECT -----------+------+-------- 1 | 김철수 | 국어 1 | 김철수 | 수학 1 | 김철수 | 영어 2 | 이영희 | 국어 2 | 이영희 | 과학 3 | 박민수 | 수학 3 | 박민수 | 체육 GROUP_CONCATGROUP_CONCAT 함수를 사용하면 그룹 내 데이터를 하나의 문자열로 결합하여 출력할 수 있다. 아래와 같이 GROUP_CONCAT 을 사용하면 된다. SELECT STUDENT_ID, GROUP_..