MySql - INSERT ~ ON DUPLICATE KEY UPDATE 사용하기

*** 설명 ***
유니크 인덱스 혹은 PRIMARY KEY 값이 중복되어 인서트하지 못하는 경우 업데이트를 수행한다. 오라클의 MERGE INTO와 비슷한 기능.


*** 예제 ***
INSERT INTO TEST_TABLE (A, B, C)
  VALUES (1, 2, 3)
  ON DUPLICATE KEY UPDATE B = 4, C = 5;
=> A 컬럼이  PRIMARY KEY.
   TEST_TABLE에 A 컬럼이 1 인 행이 없으면 INSERT INTO TEST_TABLE (A, B, C) VALUES (1, 2, 3) 이, 있으면 UPDATE B = 4, C = 5 이 실행된다.


스프링 프로퍼티 사용하기

*** 설명 ***
Value 어노테이션을 사용하여 프로퍼티 값을 가져올 수 있다.
값에 따라서 String, boolean 등의 형식을 지정할 수 있다.

***예제 ***
@Value("${prop.name1}")
private String propName1;

@Value("${prop.name2}")
private boolean propName2;


Java - SHA1 샘플

* byte 데이터를 입력받아 SHA1로 변환한 결과 문자열을 리턴한다.


public static String convertSHA1(byte[] srcBytes)
    {
        try
        {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
            messageDigest.update(srcBytes);
            byte digestBytes[] = messageDigest.digest();
           
            return String.format("%0" + (2 * digestBytes.length) +  "x", new BigInteger(1, digestBytes));
        }
        catch(Exception e)
        {
        }
       
        return null;
    }

MySql - 문자열 길이 (LENGTH)

*** 문자열 길이를 구하는 함수 ***
LENGTH           : 바이트 수
CHAR_LENGTH     : 글자 수
BIT_LENGTH tprk   : 비트(1바이트는 8비트) 수


*** 예제 ***
SELECT LENGTH('대한민국'), CHAR_LENGTH('대한민국'), BIT_LENGTH('대한민국');
=>             12                    4                          96       

SELECT LENGTH('English'), CHAR_LENGTH('English'), BIT_LENGTH('English');
=>              7                   7                      56

MySql - 시간차 계산하기

*** TIMESTAMPDIFF ***
두 DATETIME 간의 시간차이를 초/분/시/일 등의 단위로 반환.

ex) 초 단위
SELECT TIMESTAMPDIFF(SECOND, NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY));
==> 86400




ex) 분 단위
SELECT TIMESTAMPDIFF(MINUTE, NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY));
==> 1440


ex) 시 단위
SELECT TIMESTAMPDIFF(HOUR, NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY));
==> 24



ex) 일 단위
SELECT TIMESTAMPDIFF(DAY, NOW(), DATE_ADD(NOW(), INTERVAL 1 DAY));
==> 1

MySql - 문자열 자르기 (SUBSTRING)

* SUBSTRING 혹은 SUBSTR 을 사용

* SUBSTRING(문자열, 시작인덱스), SUBSTR(문자열, 시작인덱스)
시작 인덱스(1부터)부터 끝까지 문자열을 잘라서 반환.
ex) 
SELECT SUBSTRING('abcdef', 1);  => 'abcdef'
SELECT SUBSTR('abcdef', 2);     => 'bcdef'

* SUBSTRING(문자열, 시작인덱스, 길이), SUBSTR(문자열, 시작인덱스, 길이)
시작 인덱스(1부터)부터 길이만큼 문자열을 잘라서 반환.
ex) 
SELECT SUBSTRING('abcdef', 1, 3);  => 'abc'
SELECT SUBSTR('abcdef', 2, 3);     => 'bcd'

Java - split 사용시 특수문자

* split 사용시 특수문자를 사용하면 에러가 발생

String testStr = "1^2^3^4";
String[] testList = testStr.split("^");   ---> 에러

* 특수문자 앞에 \\ 을 붙이면 에러가 발생하지 않음
String[] testList = testStr.split("\\^");   --->["1", "2", "3", "4"]