LONG / INT 변수 LONG타입과 INT타입의 변수에 대한 각 자리수에 대한 값을 정렬된 값으로 변경해 새로 저장할 필요가 있다. 이를 위해 각 자리수에 대한 값을 가지고 있는 배열 객체를 생성한다. int n = 546545348; or long n = 546545348; String[] array = String.valueOf(n).split(""); //배열 생성 오름차순 정렬 Arrays.sort 메서드를 이용해 오름차순 정렬을 수행한다. Arrays.sort(array); //오름차순 정렬 내림차순 정렬 Arrays.sort메서드와 Collections.reverseOrder 메서드를 이용해 내림차순 정렬을 수행한다. Arrays.sort(array,Collections.reverseOrd..
타 업체 혹은 외부에서 데이터를 가져와서 사용할때 인코딩 방식이 다른 경우가 존재하기때문에, 내부적으로 쿼리에서 인코딩을 맞출 필요가 존재합니다. 그럴때 사용하는게 CONVER함수입니다. CONVER함수는 CAST와 비슷하지만, 문자열 인코딩을 설정할 수 있어 조금 더 MYSQL에서 특화된 함수라고 볼 수 있습니다. CONVERT 사용법 기본적으로 CONVERT함수는 CONVERT(EXPRESSION , DATA_TYPE) 으로 표현식이 구성되어있습니다. 하지만, 문자열 인코딩 값을 설정하는 경우에는 콤마 대신 USING 키워드를 사용해 데이터 타입을 구분합니다. CONVERT(EXPRESSION USING DATA_TYPE) SELECT CONVERT('안녕하세요 123 ABC' USING 'euckr..
MYSQL에서 WITH 구문절에 RECURSIVE 키워드를 이용해 재귀 CTE를 구성할 수 있습니다. 기본 재귀 코드 이러한 재귀 CTE는 보통 연속된 값들을 구현하기 위해서 사용합니다. WITH RECURSIVE CTE1 AS ( SELECT 0 RNUM FROM DUAL UNION ALL SELECT RNUM+1 FROM CTE1 WHERE RNUM < 20 ) SELECT * FROM CTE1 위의 쿼리를 수행하게 되면 0부터 20까지의 연속된 숫자를 가지고 있는 데이터를 생성 할 수 있습니다. 타 컬럼 추가 재귀 코드 추가적으로 연속된 값 말고도, 다른 컬럼을 생성할 수 있습니다. 대신에 타 컬럼을 추가할때는 크기 값을 주의 해서 사용해야됩니다!! WITH RECURSIVE CTE1 AS ( SE..
Mysql에서는 WITH 구문 내부안에서 ORDER BY절을 이용하여 정렬을 할 수가 없습니다. 하지만, 임시테이블 내에서 정렬된 순서라든지 값이 필요한 경우가 존재하기때문에 ROW_NUMBER() 함수를 이용해 정렬에 사용합니다. 기본적으로 테이블 데이터들은 PK값이나 인덱스 값을 기준으로 오름차순 정렬되어 있는 경우가 많습니다. 그로인해 정렬을 지정안하고 WITH 구문절에서 데이터를 가지고 와도 오름차순 정렬되어 있는 경우가 존재하지만, 내림차순 정렬을 지정할 경우에는 아래와 같이 ROW_NUMBER 함수를 이용합니다. ROW_NUMBER 이용하기 WITH TEMP_TABLE ( SELECT COL1 , COL2 , ROWNUMBER() OVER(ORDER BY COL2) AS ROW_NUM -- 순..
CTE란? Common Table Expression 의 약어로, 일반적으로 공통 테이블 표현식이라고 번역됩니다. sql 쿼리내에서 임시로 정의된 이름이 지정된 집합으로 간주되는 가상의 테이블로 복잡한 쿼리를 간결하게 작성하고, 재사용 가능한 부분을 정의하며 가독성을 향상시킬 수 있습니다. 이러한 CTE를 Oracle과 Mysql8.0 이상에서는 WITH 구문절로 제공하고 있습니다. WITH(CTE) 구문절 사용법 WITH TABLE_NAME AS ( SELEECT COL1,COL2 FROM TABLE WHERE CONDITION ) SELECT * FROM TABLE_NAME WHERE COL1 = VALUE; 위의 형식으로 ' WITH 테이블명 AS (SELECT ~) ' 의 형식으로 Oracle과 ..
String vs StringBuilder vs StringBuffer 위의 세 클래스는 모두 문자열을 관리하고 저장하는 클래스입니다. 다만, 약간의 차이와 성능적인 면에서 다른 점을 보입니다. String String 클래스는 불변(immutable)객체라는 큰 특징이 존재합니다. String 클래스는 문자열을 저장하기 위해서 내부적으로 'char' 배열을 사용하여 저장하는데, 저장하는 char [] 를 보면 final 로 선언되어 있는 점을 확인 할 수 있습니다. 즉, String 객체는 불변객체이므로 문자열 연산이 수행될때마다 새로운 'String' 객체가 생성되며 객체의 해시코드 값이 계산됩니다. 이러한 해시코드 값은 최초 한번만 계산되어 캐싱 되어 메모리에 저장하고 있습니다. 단, 새로운 Str..
에러 현상 Eclipse에 Spring Tool Suite 관련 플러그인을 설치 후 프로젝트를 실행했을때 발생하는 오류입니다. 해결 방법 window -> Preferemces -> Java -> Editor -> Mark Occurrences -> Mark ocuurences of the selected element in the current file 체크 해제 하면 에러 메세지가 사라집니다. 끝~~
프로그래머스 Level1 크기가 작은 부분 문자열 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다. 입출력 예 t p result "3141592" "271"..
OpenSearch Dashboards는 OpenSearch 기반 검색 시스템을 모니터링하고 관리하기 위한 툴입니다. Discover 기능을 사용하여 운영중인 시스템에 대한 여러가지 Application Log를 검색 할 수 있고, 시각화하여 분석할 수 있습니다. OpenSearch Dashboard 설치 후 대시보드 사이트에서 로그인을 진행해주세요. OpenSearch Dashboards Visualize & analyze 를 클릭해 접속해주세요. Application에 대한 Log를 검색할 예정이므로, Discover를 클릭해 접속해주세요. OpenSearch Dashboards 의 Discover 구성 화면입니다. ① 검색창에 쿼리를 입력할 수 있으며 필터 옵션을 사용하여 결과를 필터링하고, 시간 ..
Mysql에서 insert문을 수행했을때 컬럼값과 지정된 value의 갯수가 일치하지 않을때 아래의 오류가 발생한다. Column count doesn't match value count at row 1 주로 ' insert into table select * from table2 ' ~ 를 수행했을 때, 테이블의 갯수와 value의 갯수가 동일시되지 않아 발생하는 오류이므로 아래의 쿼리를 통해 table 컬럼 개수를 통해 확인 후 해결 할 수 있다. SELECT COUNT(*) FROM information_schema.columns WHERE table_name='테이블명';