티스토리 뷰

sql 문자열 자르기 left, right || length 문자열 길이


아래가면 잘 설명 되어 있다. 


출처 : https://chongmoa.com:45183/sql/9155



left 는 말그대로 왼쪽에서 몇번째 까지만 보여주겠다 이다.


1
2
3
left ("문자열12345",5)
 
결과 : 문자열12
cs

이런 식이다. 헷갈리지만 않으면 쓸만하다.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


right 는 말그대로 오른쪽에서  몇번째 까지만 보여준다.


1
2
3
right ("문자열12345",5)
 
결과 : 12345
cs


 이런식이다.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


substr 은 간단하다 몇번째에서 몇번째까지 보여준다.


1
2
3
substr ("문자열12345",1,3)
 
결과 : 
cs


이런식이다. 위치만 잘 알면 된다.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


length 는 간단하다 그냥 컬럼명을 감싸서 문자열의 길이를 알수있다.


1
2
3
length (컬럼명)
 
결과 : 숫자나옴
cs


저런식으로 하면 결과가 숫자가 나온다.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


응용이다. 이것들을 내가 왜 궁금했느냐면 문자열을 당연히 자르려고 했겠지 

그랬는데 사용한 DB가 H2 DB라서 먼가 잘 안먹히드라 

UPDATE에서 SELECT 넣어서 A 테이블을 조회해서 A 테이블의 컬럼 내용의 문자열을 잘라 

다시 UPDATE 시키려했는데 잘안되서 애좀 먹었다. 

여튼 내가 썻던 코드를 그대로 적고 결과를 적겠다. 참고만 하도록


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
" 잘라야할 문자열은  : 1234/ abcdefg [CHQ] " 
" 테이블명 : aTable " / " 컬럼명 : aTable_col "
" 저 문자열이 몇 천개가 랜덤으로 있다고 가정했을때 "
 
// SUBSTR 를 사용한 경우 // 앞자리 6개를 자르고 나머지 문자열을 저장 할떄이다.
 
UPDATE aTable A 
 
SET aTable_col = ( SELECT substr( aTable_col, 6 , length( aTable_col ) ) FROM aTable WHERE aTable_no = A.aTable_no ) 
 
WHERE EXISTS ( SELECT 1 FROM aTable WHERE aTable_no = a.aTable_no ) ;
 
" 결과 : abcdefg [CHQ] " " 앞자리가 6개 날려서 저렇게 나온거다 "
 
 
// LEFT 를 사용한 경우 // 맨 뒷자리 "[CHQ]" 이 부분을 자르는 예제이다.
 
UPDATE aTable A 
 
SET aTable_col = ( SELECT left( aTable_col, length( aTable_col ) - 5 ) FROM aTable WHERE aTable_no = A.aTable_no ) 
 
WHERE EXISTS ( SELECT 1 FROM aTable WHERE aTable_no = a.aTable_no ) ;
 
" 결과 :1234/ abcdefg " " 뒷자리가 5개 날려서 저렇게 나온거다 " // " 더 간단한 방법도 있을지도... "
 
cs



이래 해봤다 도움이 나한텐 되었다 ~ 읽어주신다고 수고 하셨습니다. BYE~BYE~



'DataBase > SQL' 카테고리의 다른 글

[SQL 쿼리] LIKE 대소문자구분 없이 검색  (2) 2017.02.15
paging - *  (0) 2016.10.20
SEQUENCE - auto_increment 대신? 오라클  (0) 2016.10.17
SQL 컬럼 추가  (0) 2016.10.13
댓글