1) 문자형 함수

LOWER             모든 문자를 소문자로

UPPER              모든 문자를 대문자로

INITCAP            첫 글자는 대문자,나머지는 소문자로
CANCAT            첫 번째 문자와 두 번째 문자를 연결

SUBSTR            문자의 길이를 리턴할 때
LENGTH            문자의 길이를 리턴할 때
NVL                  널값을 다른 값으로 대체할 때
NVL2                조건에 의해 널값을 다른 값으로 대체할 때


SUBSTR            특정 문자의 문자열중 필요 부분만 선별하여 사용


RTRIM               서브 스트림의 정확한 위치와 길이를 요구(오른쪽)


LTRIM               서브 스트림의 정확한 위치와 길이를 요구(왼쪽)
RPAD                문자열을 제외한 공간에 지정한 문자열로 대체(오른쪽)


LPAD                문자열을 제외한 공간에 지정한 문자열로 대체(왼쪽)
TRANSLATE       첫 문자는 탐색집합의 첫 문자로 대체(2번째도 동일)
REPLACE          특정 문자열을 다른 문자열로 대체


SOUNDX            같은 단어 또는 유사한 사운드 단어를 음성학적으로
LENGTH            문자의 실제 길이를 변환할 때
LENGTHB          문자열의 실제 길이를 변환할 때
INTSTR             문자열 내의 특정 스트림의 위치
NULLIF             조건이 같으면 NULL,다르면 지정된 값을 리턴할 때


COALESCE       조건에 따라 여러 가지 값을 리턴할 때



2. 시스템 함수

USER               현재 DB 사용자
USERID            현재 DB 사용자에게 할당되는 사용자번호


3. 숫자형 함수

ROUND             해당 소수점 자리에서 반올림할 때
TRUNC             해당 소수점 자리에서 절삭할 때
MOD(m/n)        m을 n으로 나누고 남은 나머지를 리턴할 때
ABS                 숫자 값을 절대값으로 바꾼다
SIGN                숫자가 양수:+1, 음수:-1, 0:0
FLOOR             실수값을 정수값으로
CEIL                그 수보다 가장 크거나 작은값을 리턴
POWER            해당 수에 대한 지수값을 표현
LOG                로그값으로 변환
SIN                  SIN값
COS                COS값
TAN                 TAN값



4. 날짜형 함수

SYSDATE         현재 시스템 날짜를 보여줄 때
ADD_MONTHS   지정한 날짜에 몇 월을 추가한 결과의 월을 계산할 때
LAST_DAY        해당 월의 마지막 날짜를 알고자 할 때
NEW_TIME        해당 표준시로 시간을 변환할 때
NEXT_DAY        해당 날짜의 다음 지정한 날짜로 현환할 때
NONTH_BETWEEN   지정된 월 간의 월수를 알고자 할 때




5. 변환 함수

TO_CHAR       숫자,날짜 타입의 Data를 varchar2타입으로 변환
TO_NUMBER   숫자를 포함하는 문자 String을 number 타입으로 변환
TO_DATE        문자 String을 날짜 타입으로 변환


출처
http://wingh.egloos.com/4152294 

기타 다른거

오라클에서 인덱스 조회하기

SELECT
a.index_name,a.index_type,a.table_name,b.column_name
     FROM USER_INDEXES a,USER_IND_COLUMNS b
     WHERE a.index_name = b.index_name
                 AND a.table_name=upper('테이블명');






회사에서 오라클을 이용하여 오라클 관련 책을 사게되었다 
오라클 성능 고도화 원리와 해벅1
오라클 성능 고도화 원리와 해법2
이 두권 ... 기격은 거이 8마넌가까이한다.. 컴퓨터 책은 너무 비싼듯하다.
책내용은 대학교때 공부하던 수준의....딱딱한 내용의 책이다.. 내가 싫어하는 스타일 ㅠㅠ
공부하면서 정리를 해볼려고한다.
책 1은 너무 기초와 원리가있어서 보기가 졸립다 나중에 함 다시 보기로하고 2권 으로 넘어가자 ㅎㅎ

1. 쿼리중 where  잘못쓰는 예

SELECT * FROM table where   
 잘못된경우  쿼리 수정
 substr(필드,1,2)='조건'  필드1 like '조건%'
 where 필드1<>'조건'  '조건' and 필드 <'조건'    // 경우에 따라 다름
 where 필드*12 = 350  필드 = 3500*12
   
   
   

필드가공, 부정형 , null 체크 등을 할경우 table full scan 현상이 발생한다.


2. 형변환 오류

varchar2 형을  + 거나 - 면서 데이터를 비교할때 문제가 생길수있다.

필드1 = substr('20091020',1,6)-1

이런 조건 절이라면

필드1 = TO_char(add_months(to_date('20091020','yyyymmdd'),-1),'yyyymm')

요런식으로 변경해보자 ...


3.형변환 필요성

--> 만약 다른형식의 데이터를 비교할때는 꼭 형변환을 한다. 

      이유는 DBMS가 형변환할때 여러가지이유로 정확한 데이터를 제공할수 없을수 있기 때문이다

      특히 Decode 함수를 이용할때 주의해야한다.

      문자 날짜일경우는 날짜로 

      문자 숫자일경우는 숫자로

      형변환 해준다.

Decode 설명있는곳  영문이라 어려움 이해는 안간다 ㅡㅡ;;

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions040.htm
다량의 인서트와 업데이트 할때 유용하다.


SqlMapClient client = getSqlMapClient();
try{
client.startTransaction(); //선언해죠야하낟.
client.startBatch();
for (int i = 0; i < listDeptIDs.size(); i++) {
Object res = getSqlMapClientTemplate().queryForObject("select-role-dept", params); // 객체있는지 판단
   //System.out.println("res : " + res + ", " + deptid + " : " + rid);
   if (res == null || Integer.parseInt("" + res) <= 0) {
    client.insert("insert-role-dept", params); // 인서트할 쿼리를 넣는다.
   }
}
client.executeBatch();
} catch (Exception e) {
   e.printStackTrace();
   return false;
  } finally {
   try {
    client.endTransaction(); // 종료 확실히
   } catch (Exception e) {
    e.printStackTrace();
    return false;
   }
  }

잘사용하자.

펌 - http://naucika.tistory.com/63

Jakarta POI



VII. 엑셀 쓰기예제


쓰기도 역시 읽기와 비슷합니다.

엑셀 워크북을 생성합니다. 행과 셀을 생성하려면 당연한 절차겠죠?

HSSFWorkbook workbook = new HSSFWorkbook();


시트를 생성합니다.

시트명을 파라미터로 바로 생성 합니다.

HSSFSheet sheet = workbook.createSheet("sheet name");


만약 한글로 시트명을 만들려면 다음과 같이 인코딩이 필요합니다.

HSSFSheet sheet = workbook.createSheet();

workbook.setSheetName( 0 , "한글" , HSSFWorkbook.ENCODING_UTF_16 );


셀에 사용할 스타일을 미리 생성해 둡니다.

HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.GREEN.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.BLUE.index);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
style.setTopBorderColor(HSSFColor.BLACK.index);

등 여러가지 스타일을 만들 수 있습니다.


스타일은 다음 주소를 참고하세요

http://jakarta.apache.org/poi/apidocs/org/apache/poi/hssf/usermodel/HSSFCellStyle.html


로우를 하나 생성합니다.

HSSFRow row = sheet.createRow(0);


셀츨 하나 생성하여 스타일을 주고 값을 입력합니다.

HSSFCell cell = row.createCell((short)0);

cell.setCellStyle(style);

cell.setCellValue("jakarta project!");


만약 한글을 입력한다면 인코딩 해야 하며 값 세팅전에 해야 합니다.

cell.setEncoding(HSSFCell.ENCODING_UTF_16);  //한글 처리

cell.setCellStyle(style);

cell.setCellValue("자카드타 프로젝트!");


모든 셀이 다 입력되었으면 파일을 만듭니다.

FileOutputStream fs = new FileOutputStream("excelfile.xls");
workbook.write(fs);
fs.close();



VIII. 쓰기샘플 소스


<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ page import="java.io.*" %>
<%@ page import="org.apache.poi.poifs.dev.*" %>
<%@ page import="org.apache.poi.hssf.record.*" %>
<%@ page import="org.apache.poi.hssf.record.formula.*" %>
<%@ page import="org.apache.poi.hssf.model.*" %>
<%@ page import="org.apache.poi.hssf.usermodel.*" %>
<%@ page import="org.apache.poi.hssf.util.*" %>


<html>
<body>

<%

    String filepath = "C:\\Tomcat 5.0\\webapps\\ROOT\\write.xls";


    try {

        String[] cell_value = {"자카르타","프로젝트","www.jakartaproject.com"};


        HSSFWorkbook workbook = new HSSFWorkbook();


        HSSFSheet sheet = workbook.createSheet();
        workbook.setSheetName(0 , "한글명" ,HSSFWorkbook.ENCODING_UTF_16);


        HSSFCellStyle style = workbook.createCellStyle();
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBottomBorderColor(HSSFColor.BLACK.index);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setLeftBorderColor(HSSFColor.GREEN.index);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setRightBorderColor(HSSFColor.BLUE.index);
        style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
        style.setTopBorderColor(HSSFColor.BLACK.index);           


        HSSFRow row = sheet.createRow(0);
        for (int i = 0 ; i < cell_value.length; i++){
            HSSFCell cell = row.createCell((short)i);
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellStyle(style);
            cell.setCellValue(cell_value[i]);
        }
           
        FileOutputStream fs = null;
        try {
            fs = new FileOutputStream(filepath);
            workbook.write(fs);
        } catch (Exception e) {
        } finally {
            if (fs != null) fs.close();
        }
       
    } catch (Exception e) {
%>
        Error occurred:  <%= e.getMessage() %>
<%  
        e.printStackTrace();
    }   
   
%>

</body>
</html>



자 결과화면 입니다.





성공!


위의 소스를 기본으로 한다면 그리 어렵지 않을겁니다 ^^


참고로 셀병합은


HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

HSSFRow row = sheet.createRow((short) 1);
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("This is a test of merging");

//셀병합
//Region(int 시작row, short 시작col, int 종료row, short 종료col)
sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));

FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

와 같이하면 됩니다


문자 조작 함수
CONCAT(column1 | expression1, column2 | expression2)

문자붙이기

SELECT concat(job,sal)
FROM emp;

CLERK800
SALESMAN1600
SALESMAN1250

SUBSTR(column | expression, m[,n])
위치 m에서 n개 지정된 문자를 반환
m이 음수면 문자 값의 끝부터 세며, n을 생략하면 끝까지 반환 n=갯수
SELECT SUBSTR(job, 1,6)
FROM emp;

SUBSTR(JOB,1 ,6)
CLERK
SALESM
SALESM
MANAGE

LENGTH(column | expressio)
문자수 반환 ,문자열의 길이
SELECT ename, length(ename)
FROM emp;

 

INSTR(column | expression, 'string', [,m],[n])
지정된 문자열의 위치를 숫자로 반환
SELECT INSTR('Hello,World', ',W')
FROM dual;

---->6

LPAD(column | expression, n, 'string') **800
전체 폭이 n이 되도록 문자 값을 오른쪽으로 정렬하고 빈 곳을 지정한 string으로 채운다.

RPAD(column | expression, n, 'string)800**
전체 폭이 n이 되도록 문자 값을 왼쪽으로 정렬하고 빈 곳을 지정한 string으로 채운다.

SELECT LPAD(sal, 5, '*'), RPAD(sal, 6, '*')
FROM emp;

 

SELECT ename, CONCAT(ename, job),
LENGTH(ename), INSTR(ename, 'A'),
LPAD(sal, 5, '*'), RPAD(sal, 6, '*')
FROM emp
WHERE SUBSTR(job, 1, 5) = UPPER('sales');

ENAME CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,'A') LPAD(SAL,5 RPAD(SAL,6,'
ALLEN ALLENSALESMAN 5 1 *1600 1600**
WARD WARDSALESMAN 4 2 *1250 1250**
MARTIN MARTINSALESMAN 6 2 *1250 1250**
TURNER TURNERSALESMAN 6 0 *1500 1500**

CHR
숫자에 맞는 ASCII문자 출력
SELECT CHR(65)
FROM dual;

 

ASCII
해당 ASCII로 변환
SELECT ASCII('a')
FROM dual;

 

LTRIM
정의된 문장에서 왼쪽에서 지정된 단어가 나타나면 제거
SELECT LTRIM('xyxXxyLAST WORD', 'xy')
FROM dual;

---->XxyLAST WORD

RTRIM
정의된 문장에서 오른쪽에서 지정된 단어가 나타나면 제거
SELECT RTRIM('TURNERyxXxy', 'xy')
FROM dual;

 

REPLACE
해당문자가 발견되면 지정된 문자로 변환
SELECT REPLACE('JACK and JUE', 'J', 'BL')
FROM dual;

REPLACE('JACKA
BLACK and BLUE

GREATEST
주어진 단어 중 가장 높은 값
SELECT GREATEST('HARRY', 'HARIOT', 'HALORD')
FROM dual;
처음에는 H부터 비교 -> A비교 ->

LEAST
주어진 단어 중 가장 낮은 값
SELECT LEAST('HARRY', 'HARIOT', 'HALORD')
FROM dual;

 

NVL
칼럼이 NULL이면 지정한 값으로 대치
SELECT NVL(sal, 0), NVL(ename, '*'),
NVL(hiredate, SYSDATE)
FROM emp;


XML 예약문자

<, >, &는 XML tag 표시와 entity를 표시하는 XML 예약문자로, XML 문서에 그대로 사용할 수 없다.

< (less-than sign)  &lt;
> (greater-than sign)  &gt;
& (ampersand)  &amp;


그리스문자

그리스 문자는 풀어서 사용한다.

α alpha
β beta
γ gamma
δ,Δ delta
ε epsilon
ζ zeta
η eta
θ theta
ι iota
κ kappa
λ lambda
μ micron
ν nu
ξ xi
ο omicron
π pi
ρ rho
σ, Σ sigma
τ tau
υ upsilon
φ phi
χ chi
ψ psi
ω, Ω omega


기호 & 부호

&lt; or =
&gt; or =
± +/-
˚ degrees
degrees C
--&gt;
㎍, μG microgram
㎕, μL microliter
㎛, μM micrometer
® (R)
(TM)
χ2 chi─square


화학기호

화학기호는 윗첨자나 아랫첨자를 지정하지 않고 그대로 입력한다.

K+ K+
Cl- Cl-
Mg2+ Mg2+
CO2 CO2
H2O H2O


수학기호

수학기호는 윗첨자나 아랫첨자를 괄호 "( )" 안에 넣어서 입력한다.

102 10(2)
10-2 10(-2)
height2.239 height(2.239)


DB 별 문자열 더하기 DB&NoSql 2010. 10. 21. 11:38

MSSQL

SELECT  필드명 + 필드명 + 필드명 FROM 테이블명

SELECT  필드명 +'내용'+ 필드명 FROM 테이블명

MySQL

SELECT CONCAT(필드명,필드명,필드명) FROM 테이블명

SELECT CONCAT(필드명,'내용', 필드명) FROM  테이블명

ORACLE

SELECT 필드명 || 필드명 || 필드명 FROM 테이블명

SELECT 필드명 || '내용' || 필드명 FROM 테이블명
검색 명령에
select * from all_db_links;
입력하면 해당 DB에 연결되어있는 DB 링크 리스트가 보인다.