2009/06/22 11:55 Voice Portal/Database
크리에이티브 커먼즈 라이선스
Creative Commons License

sql은 너무 어렵습니다. 이번에는 LPAD에 대해서 알아봅시다.

 

아래 내용 출처입니다.

http://winslab.cnu.ac.kr/Oracle%20API/server.101/b10759/functions072.htm

 

 

LPAD(expr1, n [, expr2 ])

 

Purpose

LPAD returns expr1, left-padded to length n characters with the sequence of characters in expr2. This function is useful for formatting the output of a query.

 

Both expr1 and expr2 can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The string returned is of VARCHAR2 datatype and is in the same character set as expr1. The argument n must be a NUMBER integer or a value that can be implicitly converted to a NUMBER integer.

 

If you do not specify expr2, then the default is a single blank. If expr1 is longer than n, then this function returns the portion of expr1 that fits in n.

The argument n is the total length of the return value as it is displayed on your terminal screen. In most character sets, this is also the number of characters in the return value. However, in some multibyte character sets, the display length of a character string can differ from the number of characters in the string.

 

뭐 도움이 될만한 설명이 없노.. 흠흠;;

 


Examples

 

The following example left-pads a string with the asterisk (*) and period (.) characters:

SELECT LPAD('Page 1',15,'*.') "LPAD example"  FROM DUAL;

 

LPAD example
---------------

 

*.*.*.*.*Page 1

역시 예제 한번 보는 게 도움이 되는 군.

위 설명에 의하면 LPAD('Page 1',15,'*.')는 총 15개의 char를 return값으로 돌려주는데,

문자열이 15자가 될때까지 Page 1의 왼쪽에는 '*.' 로 채워라... 이런 뜻??  함수가 좀 불편하게 되어 있는듯..

 

 

그럼 내가 해결하려고 하는 이것은 무슨 뜻인고 하니... 또 검색을 해봐야겠다.

링크에 자세히 설명이 되어 있음. http://joahani.egloos.com/3564458

 

 

-- 서비스명

LPAD(' ', 4*(LEVEL-1)) || base2.servicename servicename,

 


START WITH
                base2.serviceDepth = 1

CONNECT BY PRIOR
                base2.ServiceCode = base2.OwnerCode
ORDER SIBLINGS BY
                base2.jobcode,
                base2.ServiceCode

 

뭐 전체 query를 올릴 수 없는 관계로.. 설명이 필요한 부분만 정리 해보겠습니다.

참고로 저는 select만 할 줄 아는 관계로... 제가 이해한데로만 이야기 하겠습니다.

혹시 잘못된 부분이 있으시면 바로 이야기 부탁드리겠습니다.

 

첫번째 줄 부터 설명을...

LPAD(' ', 4*(LEVEL-1)) || base2.servicename servicename,

 

LPAD에 대한 설명은 위에서 했으므로 생략하겠습니다.

LEVEL이라는 것이 있는데, 저런 필드는 없더군요. 이건 나중에 설명하다보면은 뭔가 감이 잡힐듯... 일단 계속 설명을 하자면, LEVEL이 1이면 괄호 안의 값이 0이 되므로 servicename의 왼쪽에 빈칸이 올리가 없겠죠? LEVEL이 2이면 괄호 안의 값이 1이 되므로,  4*1은 4가 되므로 총 문자열은 4칸인데, 4칸 모두 ' '으로 채우고 그 후에 servicename을 채웁니다.

 

 

START WITH
                base2.serviceDepth = 1

START WITH문을 설명 하자면, START WITH문에서는 base2.serviceDepth = 1 이라고 하였는데 Tree를 만드는 기준 점을 serviceDepth로 지정로 지정하였습니다. 즉 Root는 base2.serviceDepth가 1인 것 부터 root가 됩니다.

 

 

CONNECT BY PRIOR
                base2.ServiceCode = base2.OwnerCode

 

CONNECT BY 절을 또 설명하자면, 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정합니다. 두 관계를 주로 PRIOR을 이용해서 설정을 합니다.

 

CONNECT BY PRIOR base2.ServiceCode = base2.OwnerCode

 

CONNECT BY  base2.ServiceCode = PRIOR base2.OwnerCode

위 2개의 쿼리는 결과가 틀려집니다.

아래 내용을 보시면 더 이해가 빠르실듯...

 

1.  CONNECT BY PRIOR 자식컬럼 =           부모컬럼  ==> 부모에서 자식으로 트리 구성

2.  CONNECT BY            자식컬럼 = PRIOR 부모컬럼  ==> 자식에서 부모으로 트리 구성

 

 

 

ORDER SIBLINGS BY
                base2.jobcode,
                base2.ServiceCode

마지막으로 ORDER SIBLINGS BY입니다.  이건 뭐 ORDER BY랑 비슷한듯, 검색한 순서데로 보고 싶을 때 사용한다는 군요. ORCALE 9i 이후 버전에서만 사용가능하다고 합니다.

 

 

 

흠... 이것 저것 검색을 해보면서 정리는 했지만, 솔직히 저도 이해하기가 쉽지 않네요.

대학교 DB수업 때는 SELECT, INSERT, UPDATE 써본게 전부고, 모든 data를 하나의 테이블에 넣고 사용했던 터라....

역시 대학교 때 공부 안한건 티가 나더라고요... MFC와 DB는 아주 미치겠습니다. ㅎㅎ

쓸데 없는 어셈블리어나 공부하고 ㅠㅜ MFC나 공부할 걸 ㅠㅜ

 

 

 

 

 

 

 

 

 

'Voice Portal > Database' 카테고리의 다른 글

[tomcat] DBCP 설정하기  (0) 2009/11/17
[sql] SQL 설명이 잘 되어 있는 사이트  (0) 2009/10/22
[sql] LPAD 함수  (0) 2009/06/22
[sql] UPDATE 문  (0) 2009/06/17
[sql] 문자열 함수  (0) 2009/06/16
[sql] ALTER 예제  (2) 2009/06/16
posted by 조금까칠한남자
2009/06/09 23:55 Voice Portal/Database
크리에이티브 커먼즈 라이선스
Creative Commons License

아윽... 이제 쿼리도 해야겠어요 ㅠㅜ

 

제 분야 하나만 열심히 파고 싶은데 ㅠㅜ

하고 싶은 일만 할 수는 없나봅니다 ㅠㅜ

 

그래도 요새 지인들의 이야기를 들어보면은 DB는 기본적으로 해야 한다고 하네요.

기본적인거야 대학교 때 DB시간에 다 배웠지만...

회사에서 말하는 기본은 이런게 아니겠죠^-----------^

 

암튼 검색 결과 LEFT OUTER JOIN에 대해서 굉장히 쉽게 설명을 해 놓은 자료가 있어서 올립니다.

 

출처

 

LEFT OUTER JOIN은

B 테이블에 조건에 맞는 행이 존재하는지 여부와 상관없이 A 테이블의 행은 모두 반환하게 하고 싶을 때 사용합니다.

 

즉, A 테이블에 1,2,3 이 있고, B 테이블에, 2,3,5 가 있을 때

 

A LEFT OUTER JOIN B 인 경우에는 (1,2,3)이 반환되고

A JOIN B 인 경우에는 (2,3)만 반환됩니다.

 

나름 이것 저것 바꿔 가면서 sql을 날려보니까 꽤 재미있네요^_^

이 참에 DB도 배워 볼까요???

근데 이것 저것 다 잘 하면 안되는데...흠흠흠....

posted by 조금까칠한남자
2009/04/13 15:32 Voice Portal/Database
크리에이티브 커먼즈 라이선스
Creative Commons License

아이.. 짜잉나 ㅎ

오라클을 처음 써보는데.. 이거 완전... 덴장이다...

일단 정리를 해보자.

 

예전에는 Toad를 사용하려 할 때 Oracle 클라이언트를 설치해야 했다.

10g부터는 간단한 클라이언트 환경을 구성할 수 있는 방법이 있다.

 

아래 사이트에서 Instant Client Package BasicSQL* Plus만 받으면 된다.(SQL* Plus는 테스트용이다.안 받아도 상관 없을듯... path추가를 하려면 해도 좋다.)

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html

 

나는 Version 10.2.0.4 을 받았다.

OS : 윈도우 XP

Instant Client Package Basic 버전 : 10.2.0.4

Toad version(for oracle) : 8.6

 

 

1. Instant Client Basic 압축을 푼다.

C:\instantclient_10_2

C:\instantclient_10_2\network(network디렉토리는 생성한다. 반드시 network디렉토리가 필요한 것은 아니다. tnsnames.ora를 따로 관리하는 목적이다.)

 

3. tnsnames.ora 파일을 C:\instantclient_10_2\network 디렉토리에 복사한다.

 

4. 환경변수 설정

- PATH                  : C:\instantclient_10_2 을 추가한다.

- ORACLE_HOME : C:\instantclient_10_2

- TNS_ADMIN         : C:\instantclient_10_2\network 

 

5. 레지스트리 편집기 수정

실행 - regedit 입력

 

경로: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
(ORACLE이 설치가 안되어 있으므로 없을 것이다.)

아래와 같이 "SOFTWARE"에 "키" 값을 추가 하여 ORACLE 생성

- 새로 만들기 -> "문자열 값"
값 이름 : NLS_LANG
문자열값 : KOREAN_KOREA.KO16MSWIN949

 

 

이제 Toad를 실행해보면 잘 될 것이다.

 

 

 

 

 

 

 

 

posted by 조금까칠한남자
2008/10/13 16:22 Voice Portal/Database
크리에이티브 커먼즈 라이선스
Creative Commons License

2009년 3월 24일 테스트된 정보임

 

- Driver

 DB 형식
 Oracle oracle.jdbc.driver.OracleDriver
 MSSQL com.microsoft.sqlserver.jdbc.SQLServerDriver
 MySQL com.mysql.jdbc.Driver

 

 

- DB별 URL 구조

Oracle - jdbc:oracle:thin:@hostname:port:SID  

 

MSSQL - jdbc:sqlserver://<IP>:1433;databaseName=<DB>

 

MySQL - jdbc:mysql://db_url:port/db_name

'Voice Portal > Database' 카테고리의 다른 글

JNDI Datasource - 간략히 정리  (1) 2008/11/18
SQLite3 설치  (0) 2008/11/07
각 DB의 JDBC 드라이버 다운로드  (0) 2008/10/14
각 Database별 JDBC 드라이버 설정  (0) 2008/10/13
[postgres]what is pg_hba.conf file?  (1) 2008/10/13
SQL 쿼리 문 사용하기  (0) 2008/01/12
posted by 조금까칠한남자
prev 1 next