한국오라클, 무료 DB 개발 툴 Oracle SQL Developer 출시 |
Oracle SQL Developer는 무료로 배포되고 사용하기도 편한것 같습니다. 위에 파일은
사용법에 대한 자료입니다.
한국오라클, 무료 DB 개발 툴 Oracle SQL Developer 출시 |
일반적으로 오라클을 삭제하고 나서도 레지스트리에 정보가 남아있다거나
깨끗하게 삭제하는 것은 어렵다고 생각하여
OS 를 재설치하는 등의 여러가지 수고가 들게 됩니다
최대한 깨끗하게 삭제하는 절차를 정리해보겠습니다
1. 먼저 OUI(Oracle Universal Installer) 를 이용하여 설치된 오라클 관련 제품을 삭제합니다
2. services.msc 를 실행하신후 오라클 관련 서비스 모두를 멈춥니다
3. 다음의 경로에 포함되어 있는 레지스트리 정보를 삭제합니다
- 사용자에 따라 경로가 다를수 있습니다
HKEY_CURRENT_USER\SOFTWARE\ORACLE
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application
\Oracle.oracle
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleDBConsole
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Oracle10g_home
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OraclService
4. 파일 시스템에서 오라클 관련 폴더를 삭제합니다 - 사용자의 환경에 따라 다릅니다
Oracle Home Folder
Oracle 이 설치된 Program Files 하단의 Oracle 관련 폴더 삭제
Oracle Start Group 삭제 -
예) C:\Documents and Settings\All Users\Start Menu\Programs\Oracle*
- 위의 폴더를 지웠다고 해서 서비스 목록에서 오라클 관련 서비스 목록이 삭제되지는 않습니다
재부팅이 필요합니다
5. 시스템 환경 변수에서 오라클 관련 설정 내용들을 모두 삭제합니다
- System Path 와 user defined Path 모두 해당됩니다
6. 그리고 다음의 정보를 삭제합니다
C:\Windows\assembly\ 의 Oracle.DataAccess 와 xxx Polic.Oracle 을 삭제합니다
이상으로 삭제가 완료되었습니다
새로운 오라클을 시작하기전에 반드시 위의 과정을 거치시는 것을 추천합니다
What ?
제너릭은 컬렉션(자료구조),
즉 쉽게 말해서 객체들을 저장(수집)하는
구조적인 성격을 보강하기 위해 제공되는 것.
|
0. GENERIC
다들 아시겠지만, Generic의 사전적인 의미는 다음과 같습니다.
1. (생물) 속의 , (성질) 속에 특이한
2. 일반적인, 포괄적인
3. (수,인칭,시제) 총칭적인
1. generic 필요성
Java 에서는 객체들을 담아 편하게 관리하기 위해 Collection 을 제공한다. 이 Collection 의 대부분이
어떤 객체를 담을지 모르기 때문에 모든 자바 객체들의 base 객체 (최상위 객체)인 Object로
저장되어 설계하도록 설계되어 있습니다.
문제는 이 Collection 에 Element로 어떤 Type을 받아 들임이 좋을수도 있지만
서로 다른 Type이 하나의 Collection 에 섞여 들어 가는것이 문제 JDK 5.0 에 와서 제너릭이 포함되면서
이제는 실행하기 전에 컴파일 단계에서 특정 Collection 에 객체 타입을 명시하여
지정된 객체가 아니면 절대 저장이 불가능하게 할수 있습니다.
2. 제너릭의 타입
제너릭 타입은 < > 사이에 컴파일할 당시 사용될 객체자료형만 선언 해주면 객체를 저장할 때
선언된 제너릭 타입으로만 저장된다.
API 에서는 전달되는 객체가 현 객체 내에서 하나의 자료형(Type)으로 쓰일 때 <T> 로 유도하고 있으며
전달되는 객체가 현 객체 내에서 하나의 요소(Element)로 자리를 잡을때는 <E> 로 , 그리고 전달되는 객체가
현 객체 내에서 Key 값으로 사용될 때는 <K>로,
만약 전달되는 객체가 현 객체 내에서 Value 값으로 사용될 때는 <V> 로 표현된다.
3. 사용자 정의 제네릭 클래스
앞에서 언급한 자료형을 제너릭으로 set 하고 print 해주는 간단한 사용자 정의 클래스를 만들어 보겠습니다.
package ckbin.array;
public class Generic<T> {
T[] v;
// Generic 타입으로 Set
public void set(T[] n) { v = n; } // T[] 원소 출력
public void print() { for(T s : v) System.out.println(s); } } |
사용자_Class명 <적용할_제너릭 타입> 변수명; // 선언
변수명 = new 사용자_Class명<적용할_제너릭 타입>( ) ; // 생성
|
4. 제너릭 타입 사용하기
사용자 정의형으로 만든 제너릭 클래스의 사용
위에서 생성한 사용자_Class를 사용하여 생성할때는 다음과 같이 생성자를 만들수 있습니다.
Generic<String> Gen = new Generic<String> ();
위에서 생성한 사용자_Class 를 사용하는 Main Class 를 만들어 보겠습니다.
package ckbin.array;
import ckbin.array.Generic;
public class GenericMain {
public static void main(String ar[]) {
Generic<String> Gen = new Generic<String> (); String[] StrArr = {"디워","정말","보고파"}; Gen.set(StrArr); Gen.print(); Generic<Integer> Gen2 = new Generic<Integer> (); Integer[] IntArr = {2,0,0}; Gen2.set(IntArr); Gen2.print(); } } == 출력 결과 =============================================================================
디워
정말 보고파 2 0 0 |
위 GenericMain 소스를 보면 Generic 클래스는 String 배열과
Integer 배열을 받아 출력해주는 아주 간단한 소스지만 타입을
달리주어 객체에 담은 배열들을 출력해주는것이 이상적입니다.
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("1", new Integer(1));
map.put("2", 2); // auto boxing
Integer i = map.get("1"); // 따로 캐스팅이 필요 없다.
int j = map.get("2"); // auto unboxing
이렇게 별도의 캐스팅 없이 처리할 수 있다는 점에서 좋아졌네요..
J2SE 5.0에는 새로운 언어 기능이 다수 도입되었는데, 여기에는 제네릭(Generics)과 향상된 루프문(Enhanced for Loop)이 포함된다. 제네릭(GENERIC)과 향상된 루프문에 대해서는 이미 이전 테크 팁에서 살펴본 바 있다. J2SE 5.0에 추가된 또 다른 중요한 기능으로 주석을 들 수 있으며, 본 팁에서는 J2SE 5.0에 내장된 주석을 살펴보기로 한다.
먼저, 주석이란 무엇인가? JSR 175: A Metadata Facility for the Java Programming Language의 일부로 정의된 주석은 메타데이터를 프로그램 엘리먼트(클래스, 인터페이스, 메소드 등)에 연결하는 방법을 제시해준다. 주석은 해당 엘리먼트에 대해 생성된 바이트코드를 변경하지 않는 추가 수식자(modifier)라고 할 수 있다.
메타데이터를 소스 코드에 도입한다는 개념은 J2SE 5.0에서 처음 등장한 것은 아니다. 사용자가 @deprecated
태그를 메소드의 javadoc 코멘트에 추가하면 컴파일러는 이를 메소드에 관한 메타데이터로 취급하는데, 이런 기능은 J2SE의 1.0 버전부터 포함되었다. 초기 버전의 플랫폼의 경우 이미 System
의 getenv()
메소드(1.1 addendum까지는 Java Language Specification에 포함되어 있지 않았음)와 더불어 구(deprecated) 메소드가 포함되어 있었지만, 현재로서는--적어도 구문의 @
부분에 관한 한--개념은 거의 동일하다고 볼 수 있다. 단, 위치에는 변동 사항이 생겼다는 점을 알아두기 바란다--주석 태그가 코멘트가 아니라 소스에 포함된다. 여기서 주안점은 주석이 선언적 프로그래밍 모델을 체계적으로 지원하기 위한 방법이라는 사실이다.
이제 J2SE 5.0에 포함된 최초의 주석, @Deprecated
부터 살펴보도록 하자. 우선 여기서는 대문자 D에 유의할 필요가 있다. 기능적으로 볼 때, 소스 내의 @Deprecated
는 클래스 또는 메소드와 연결된 javadoc 내의 @deprecated
와 동일하게 작동한다. 메소드에 @Deprecated
태그를 플래그하면 해당 메소드나 클래스 사용 시 사용자에게 경고 메시지를 보내도록 컴파일러를 환기시키는 효과가 있다.
아래의 Main
클래스는 @Deprecated
주석과 @deprecated
코멘트가 플래그된 deprecatedMethod()
라는 이름의 메소드를 가진다.
주석이 붙은 클래스도 주석이 붙지 않은 경우와 동일한 방식으로 컴파일한다.
> javac Main.java예상대로 Main.class
가 생성된다.
deprecated 메소드를 사용하면 javadoc 내의 @deprecated
태그를 사용할 때와 마찬가지로 컴파일 시간 경고가 생성된다. 관련 예는 다음과 같다.
아래의 클래스를 컴파일하면,
> javac User.javadeprecated 메소드를 사용하는 데 대한 경고 메시지가 다음과 같이 표시된다.
Note: User.java uses or overrides a deprecated API.컴파일 라인에 -Xlint
를 추가하면 무엇이 잘못되었는지 구체적으로 표시할 수 있다.
@deprecated
코멘트에서 @Deprecated
주석으로 변경되더라도 시스템에는 아무런 변화가 생기지 않으며, 단지 작업 수행 방식에 약간의 변화가 발생하는 것 뿐이다. 하지만 J2SE 5.0 플랫폼에 새로 추가된 다른 두 개의 주석, @Override
와 @SuppressWarnings
의 경우에는 플랫폼에 새로운 기능을 부여할 수 있다.
@Override
주석은 메소드 선언과 함께 사용할 수 있는데, 이름에서 알 수 있듯이 @Override
주석을 사용하여 수퍼클래스의 메소드를 오버라이드하도록 되어 있는 메소드를 플래그한다. 이 주석은 왜 사용하는 것일까? 오류를 더 신속하게 잡아내기 위해서이다. 아마도 여러분은 메소드를 오버라이드하려다가 메소드 이름의 철자를 틀리거나, 잘못된 인자를 지정하거나, 다른 리턴 타입을 설정했던 적이 무수히 많았을 것이다. 즉, 원래의 의도는 기존의 메소드를 오버라이드하는 것이었는데 그만 새로운 메소드를 정의해 버리는 결과가 종종 발생하게 되는 것이다. @Override
를 이용하면 그나마 클래스에서 문제점을 빨리 발견할 수가 있다.
여기서 문제는 메소드 이름이 hashcode
가 아니라 hashCode
여야 한다는 점이다. 메소드 선언이 훨씬 더 큰 클래스 정의를 위해 소스에 묻혀 버린다고 가정해보자. 최초의 @Override
주석이 없다면, hashCode()
메소드(모두 소문자가 아니라, 대문자로 시작되는 두개의 영단어를 붙여 써서)가 호출되는 대신 상위 Object
클래스의 기본값 동작을 얻고 있다는 사실을 알아차리는 데 얼마나 많은 시간이 걸리겠는가? 하지만 이제는 @Override
주석 덕분에, 클래스 컴파일 시 컴파일 시간 오류가 생성되어 문제점을 경고할 수 있다.
이런 특성의 오류를 좀더 빨리 발견할 수만 있다면 수정에 드는 수고와 비용을 획기적으로 절감할 수 있을 것이다. hashCode()
메소드의 경우 절대로 상수를 리턴해서는 안된다는 점에 유의할 것. hashCode()
와 equals()
의 올바른 사용법에 관한 자세한 설명을 보려면 Joshua Bloch가 저술한 Effective Java Programming Language Guide(영문)의 8항을 참조할 것.
J2SE 5.0에 새로 추가된 주석의 마지막 @SuppressWarnings
는 그 중에서도 가장 흥미롭다고 할 수 있다. 이 주석은 일반적으로 경고하는 내용을 경고하지 말도록 컴파일러에게 지시하는데, 경고는 일종의 범주에 속하므로 주석에 대해 어떤 종류의 경고를 금지할 것인지 지시해야 한다. javac 컴파일러는 all, deprecation, unchecked, fallthrough, path, serial, finally 등 7개의 금지 옵션을 정의한다. (언어 스펙은 이 중에서 두 가지-- deprecation과 unchecked--만을 정의함.)
예시를 위해 fallthrough 옵션 금지사항에 대해 살펴보기로 한다. 먼저 아래의 클래스를 사용해보자. 클래스에는 switch
문의 각 케이스에 대한 break
문이 빠져 있다는 점에 유의할 것.
javac으로 클래스를 컴파일하면 단순히 .class
파일만 생성되고 경고는 표시되지 않는다는 것을 알 수 있다.
컴파일러가 fall through하는(즉, 하나 이상의 break
문이 빠져 있는) switch
문에 관해 경고하기를 원할 경우에는 -Xlint:fallthrough
옵션으로 컴파일한다.
그러면 아래의 경고문이 생성된다.
Fall.java:6: warning: [fallthrough] possible fall-through into case그러나 switch
문에 각 케이스에 대한 break
문이 빠져 있다는 사실을 무시하고 싶은 경우에는 어떻게 해야 할까? 바로 이 때 @SuppressWarnings
주석이 필요하다. main()
메소드 선언 앞에 다음 행을 추가하면,
-Xlint:fallthrough
옵션으로 클래스를 컴파일할 경우,
.class
파일만 생성되고 경고문은 표시되지 않는다.
@SuppressWarnings
주석은 또한 컬렉션 엘리먼트의 데이터 유형을 지정하지 않고 컬렉션을 사용할 경우에 표시되는 것과 같은 그 밖의 경고를 금지하는 데도 사용될 수 있다. 그러나 단순히 컴파일 시간 경고를 피하기 위해서 @SuppressWarnings
주석을 사용해서는 안 된다. 제네릭을 염두에 두지 않고 구축된 라이브러리를 사용할 때처럼, 금지되지 않은 경고가 불가피한 경우에 이 주석을 사용하도록 한다.
이것으로 내장 주석 기능에 관한 설명은 마무리하고, 마지막으로 (인자를 포함한) 주석은 통상적으로 하나의 행에서 독자적으로 지정된다는 점에 유의하기 바란다.
J2SE 5.0에 이미 정의되어 있는 주석을 사용하는 것 보다 사용자가 직접 주석을 정의하는 경우에는 더 많은 기능들을 활용할 수 있다. 주석 정의에 관한 자세한 내용은 Annotations(영문)를 참조하기 바란다.
<출처 - http://kr.sun.com/developers/techtips/2006/c0713.html >
JDBC를 이용하여 DB를 엑세스해서 프로그래밍을 하는 방법의 기초에 대해서 강의합니다.
따라서 이번 강좌는 JDBC를 처음 사용하고 하는 분들에게 적합한 강좌입니다.
* JDBC 프로그래밍의 5 단계
* 1. DriverManager에 해당 DBMS Driver를 등록
Driver를 DriverManager에 등록하는 방법은 3가지가 있습니다.
Class.forName() 메소드를 이용하는 방법, Driver객체를 생성하는 방법, registerDriver() 메소드를 이용하는 방법 이렇게 3가지의 방법이 있지만 가장 일반적으로 사용하고 쉬운 방법인 Class.forName() 메소드를 이용하는 방법에 대해서만 설명하도록 하겠습니다.
해당 JDBC 드라이버를 등록하려면 당연히 JDBC 드라이버가 필요합니다. 해당 데이터베이스의 드라이버 파일을 먼저 클래스 패스에 잡으시기 바랍니다. 오라클의 경우는 www.oracle.com 에서 다운로드 받을수도 있고 오라클 설치시 같이 설치 되므로 오라클 디렉토리를 잘 살펴 보기 바랍니다.
다음으로 mySQL의 경우는 http://sourceforge.net/project/showfiles.php?group_id=15923으로 가셔서 다운받으시기 바랍니다.
이제 JDBC 드라이버를 DriverManager에 등록하는 방법에 대해서 알아 보겠습니다.
Class.forName("org.gjt.mm.mysql.Driver"); -> mySQL 의 경우
Class.forName("oracle.jdbc.driver.OracleDriver"); -> Oracle thin 드라이버의 경우
Class 는 java.lang 패키지에 있는 클래스 입니다. 자세한 내용이 궁금하신 분은 api문서를 참고 하시구요... forName 메소드에 parameter로 쓰인 String은 당연히 DBMS의 종류에 따라 틀려지겠지요? 어째든 위의 메소를 실행시키고나면 자동으로 드라이버 객체가 생성이되고, 자신을 DriverManager에 등록하는 처리가 이루어지게 됩니다.
* 2. 해당 Driver로 부터 Connection 객체 획득
Connection이라는 것은 DBMS에 연결된 session을 의미 합니다. Connection 객체를 획득하는 방법은 DriverManager의 getConnection() 메소드를 이용하면 되는데 그 형식은 다음과 같습니다.
Connection con=DriverManager.getConnection(String jdbcURL,String id,String password);getConnection 메소드는 몇가지로 오버로딩되어 있으니 궁금하신분은 API문서를 참고 하십시요..
다음과 같은 형식으로 사용합니다.
String url="jdbc:mysql://localhost/dbname"; // dbname에는 사용하는 database 이름 Connection con=DriverManager(url,"root","1234"); // root 계정, 패스워드는 1234
* 3. Connection 객체로 부터 Statement 객체 획득
하나의 Connection으로 부터 여러개의 Statement의 생성이 가능합니다. 이후에 Statement로 부터 SQL을 실행하게 됩니다. 아래의 그림을 보시면 이해가 되리라 생각됩니다.
![]() |
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbname","root","password"); Statement st1=con.createStatement(); ResultSet rs1=st1.executeQuery("select * form names"); Statement st2=con.createStatement(); ResultSet rs2=st2.executeQuery("select * form users"); Statement st3=con.createStatement(); ResultSet rs3=st3.executeQuery("select * form emails");따라서 위와 같이 사용이 가능하죠. Statement에는 3가지 종류가 있는데 그중 첫번째가 지금 사용한 Statement 입니다. 두번째로 PreparedStatement 가 있고 마지막으로 CallableStatement가 있다. 그중 CallableStatement는 저장 프로시져 (stored procedure)를 호출하는데 사용되는 것인데, 여기에서는 초급강좌인 만큼 다루지 않습니다.
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbname","root","password"); PreparedStatement ps=con.prepareStatement("update juso set si=? where zip=?); // 밑줄친 부분 주의 ps.setString(1,"Seoul"); // 첫번재 ? 이 1번이 됩니다. ps.setString(2,request.getParameter("zip")); // 두번째 " ? " // setString 말고도, setDate, setArray, setCharacterStream등 여러가지가 있습니다. ps.executeUpdate();위와같은 쿼리문(값이 변하는)을 Statement로 처리한다면 PreparedStatement 문에 비해서 String 객체를 더 많이 생성해야 해야 하고, PreparedStatement사용시에는 DB에서의 처리시에도(특히 오라클에서) 쿼리문이 캐싱되어 보다 높은 퍼포먼스를 제공하게 됩니다.
* 4. Statement의 메소드를 이용해서 SQL문의 실행
Statement 클래스에서는 쿼리문의 실행을 위해서 몇가지 메소드를 제공하는데, executeQuery()와 executeUpdate() 두개의 메소드만 알면 충분히 활용이 가능합니다.
ResultSet rs=stmt.executeQuery("select * from users");위와 같은 방식으로 사용되며 executeQuery()는 "select"문을 사용할때에만 사용되는 것이죠. 실행 결과는 ResultSet에 저장되며 저장된 정보의 처리 방법은 아래 에서 다루도록 하겠습니다.
stmt.executeUpdate("insert into users(id,password) values('ab','bc')");
* 5. ResultSet으로 받아 서 처리하기
위에서 설명했다 시피 executeQuery()를 실행하면 ResultSet 타입의 객체를 반환합니다. 이 객체는 실행된 쿼리문의 결과 같을 가지고 있는데 ResultSet의 몇가지 메소드를 이용하면 ResultSet에 저장된 정보를 사용할수 있습니다. select쿼리를 실행 했으므로 하나이상의 row를 지니고 있는데.. 현재 row에서 다음 row로 넘기려면 rs.next() 와 같이 사용하면 됩니다.(첫번째 row도 next()를 사용해야 합니다.)
각 row가 선택이 되었으면 각컬럼의 데이터를 불러 오면 되는데, 두가지의 방법이 있습니다.
첫번째방법은
String name=rs.getString(1); (name에 해당하는 항목의 첫번재 컬럼에 있을경우)
이와같이 데이터의 컬럼 위치로 검색합니다. getString의 String 에는 Int,Double, 등과 같은 자료형을 사용하면 해당 자료형에 맞는 데이터를 리턴하여 줍니다. (getString(), getInt(), getDouble() 등등....)
또다른 방법은 컬럼의 이름을 직접 서술하는 방법인데, 다음과 같이 사용됩니다.
String name=rs.getString("name");
이러게 하면 rs ResultSet에 저장되 었던 name컬럼의 데이터가 name에 저장됩니다.
* 6. 객체 close() 하기 (ResultSet, Statement, Connection)
Java는 메모리 관리를 따로 하지 않아도 자체적으로 garbage collection 기능이 있어 사용되지 않는 객체는 자동적으로 처리된다. 그러나, Sun은 JDBC 드라이버와 같이 외부 지원되는 드라이버에 대해서는 생성된 객체를 코드 내에서 소멸시키도록 권장하고 있다. JDBC API는 이를 위해 close() 메쏘드를 제공하는데, close() 메쏘드를 사용해야 할 클래스는 Connection, Statement, PreparedStatement, ResultSet 등이다. 따라서, 데이터베이스에 접속하여 SQL 구문을 모두 수행했다면 다음처럼 close() 메쏘드를 사용하여 객체를 모두 소멸시키도록 한다. - webdox |
rs.close();
st.close();
con.close();
위와 같이 사용하며, con (Connection) 과 st (Statement or PreparedStatement)는 반드시 close 되어야 합니다. 위에서 설명한 바와 같이 Statement 와 ResultSet 은 1:1 대응 이기 때문에 ResultSet 은 Statement 가 소멸되면 자동으로 소멸됩니다. (아예 처리를 하지 말라는 얘기는 아닙니다. -안전을 위해서)
* 그리고....
대부분의 Servlet/JSP 웹 애플리케이션 에서는 Connection 을 Pool 로서 관리를 하는데, 이는 매 요청시 마다 데이터베이스에 접속하고 해제하는 일을 수행하는데 있어 발생하는 부하를 줄여 주고, 일정 갯수 이상의 커넥션수를 넘지 않도록 유지시켜 주기 위해서 입니다.
이러한 Connection Pool 은 몇가지 공개된것도 있고 직접 제작할수도 있으나, 여기 에서는 생략하도록 하겠습니다.
<출처- http://www.aboutjsp.com/lec/jdbc.jsp >
EasyEclipse 설치하려면 다운 받아야 하는데, 최소한 170MB란 말야.. -_-;; 시간 없어!! ㅋㅋ; 암튼 일단 설치를 마무리하고 이클립스를 실행하고 Show Views 메뉴를 실행하면 아래와 같이 Webdav 뷰가 추가된 것을 볼 수 있다.
19.3 기본 Built-in Function
19.3.1 개요
함 수 명 유 형 리턴값 적용버전
---------------------------------------------------------------------------------------------------------
abs 수학 표현식의 절대값
ascii 문자열 표현식의 첫 문자에 대한 ASCII 코드
avg 집계 모든 고유 값의 산술 평균
ceiling 수학 지정된 값보다 크거나 같은 최소 정수
char 문자열 정수와 대등한 문자
charindex 문자열 표현식의 시작 위치를 나타내는 정수를 반환합니다.
char_length 문자열 표현식의 문자 수
col_length 시스템 정의된 열의 길이
convert 데이터 유형변환 다른 데이터 유형 또는 datetime 표시 형식으로 변환된 지정 값
count 집계 null이 아닌 고유한 값의 수
current_date 날짜 현재 날짜를 반환합니다. 12.5.1
current_time 날짜 현재 시간을 반환합니다. 12.5.1
datalength 시스템 지정된 열 또는 문자열의 실제 바이트 단위 길이
dateadd 날짜 주어진 년도, 분기, 시간 또는 기타 날짜 부분을 지정된
날짜에 더하여 만든 날짜
datediff 날짜 두 날짜 표현식 간의 차이
datename 날짜 날짜 표현식에서 지정된 부분의 이름
datepart 날짜 날짜 표현식에서 지정된 부분의 정수 값
day 날짜 지정한 날짜의 datepart에서 날짜를 나타내는 정수를 반환합니다. 12.5.0.3
floor 수학 지정된 값보다 작거나 같은 최대 정수
getdate 날짜 시스템의 현재 날짜 및 시간
hextoint 데이터유형변환 지정된 16진수 문자열에 해당하는 플랫폼 독립 정수
isdate 시스템 Expression이 날짜형식인지 확인합니다. 15.0.1
isnull 시스템 expression1이 NULL로 계산되는 경우 expression2 에 지정된 값으로
대체합니다.
isnumeric 시스템 Expression이 숫자형인지 확인합니다. 15.0.1
ltrim 문자열 선두 공백이 제거된 지정 표현식
left 문자열 문자열의 왼쪽 끝에서부터 지정한 수만큼의 문자를 반환합니다. 12.5.0.3
len 문자열 지정한 문자열 표현식의 바이트 수가 아닌 문자 수를 반환합니다. 12.5.0.3
이 때 후미 공백은 제외됩니다.
max 집계 열의 최고 값
min 집계 열의 최하 값
month 날짜 지정한 날짜의 datepart에서 월을 나타내는 정수를 반환합니다. 12.5.0.3
newid 시스템 Globally Unique ID’s (GUID) 반환 12.5.0.3
patindex 문자열 텍스트 및 이미지 지정된 패턴이 처음 발생한 시작 위치
pi 수학 상수 값 3.1415926535897936
power 수학 지정된 숫자를 주어진 거듭제곱으로 증가시키는 경우 결과 값
radians 수학 지정된 각도의 라디안 단위 각도 크기
rand 수학 지정된 시드 값을 사용하여 생성된 0과 1 사이의 임의 값
replicate 문자열 지정된 횟수만큼 반복되는 표현식으로 구성되는 문자열
reverse 문자열 역순으로 열거된 문자의 지정 문자열
right 문자열 오른쪽에서 지정된 수의 문자를 시작하는 문자 표현식의 일부
round 수학 주어진 소수점 자리로 반올림된 지정된 숫자의 값
rtrim 문자열 후미 공백이 제거된 지정 표현식
space 문자열 지정된 수의 단일 바이트 공간으로 구성되는 문자열
square 수학 float로 표현한 지정 값의 제곱근을 반환합니다. 12.5.0.3
sqrt 수학 지정된 숫자의 제곱근
str 문자열 지정된 숫자와 대등한 문자
str_replace 문자열 첫 번째 문자열 표현식 내에 있는 두 번째 문자열 표현식의 인스턴스를 12.5.0.3
세 번째 표현식으로 대체합니다.
stuff 문자열 특정 문자열에서 지정된 수의 문자를 삭제하고 다른 문자열로 바꾸어
만들어진 문자열
substring 문자열 다른 문자열에서 지정된 수의 문자를 추출하여 만들어진 문자열
sum 집계 값 총계
upper 문자열 지정된 문자열과 대등한 대문자
year 날짜 지정한 날짜의 datepart에서 연도를 나타내는 정수를 반환합니다. 12.5.0.3
19.3.2 사용법
select abs(-1)
select ascii("a")
select avg(advance), sum(total_sales) from titles where type = "business"
select ceiling(123.45)
select char(42)
select charindex("der", "wonderful")
select char_length(notes) from titles where title_id = "PC9999"
select convert(integer, 0x00000100)
select convert(varchar, getdate(), 23)
표 1) 년도를 char 또는 varchar로 변경할 때 사용되는 옵션값
년도 2자리 년도 4자리 형식
----------------------------------------------------------------------------------------------------------
- 또는 0 100 Default
mon dd yyyy, hh:mm AM (or PM)
1 101 USA mm/dd/yy
2 102 SQL standard yy.mm.dd
3 103 English/French dd/mm/yy
4 104 German dd.mm.yy
5 105 dd-mm-yy
6 106 dd mon yy
7 107 mon dd, yy
8 108 HH:mm:ss
- 또는 9 109 Default + milliseconds mon dd yyyy hh:mm:sss AM (or PM)
10 110 USA mm-dd-yy
11 111 Japan yy/mm/dd
12 112 yymmdd
13 113 yy/dd/mm
14 114 mm/yy/dd
15 115 dd/yy/mm
16 116 mon dd yy HH:mm:ss
17 NONE hh:mmAM
18 NONE HH:mm
19 NONE hh:mm:ss:zzzAM
20 NONE hh:mm:ss:zzz
21 NONE yy/mm/dd
22 NONE yy/mm/dd
23 NONE yyyy-mm-ddTHH:mm:ss
select current_date()
select current_time()
select datalength(col1) from table1
select dateadd(hh, 24, "4/1/1979")
select datediff(yy, convert(date, "4/1/1999"), convert(date, "4/1/2000"))
year : yy
quater : qq
week : wk
day : dd
dayofyear : dy
weekday : dw
hour : hh
minute : mi
second : ss
millisecond : ms
select datename(mm, getdate())
select datepart(month, getdate())
select day(getdate())
select floor(123.45)
select getdate()
select hextoint ("0x00000100")
select isdate("20001231")
select isnull(price,0) from titles
select isnumeric("12345")
select ltrim(" aaa")
select left("abc", 1)
select len("abcdefg")
select max(discount) from salesdetail
select min(discount) from salesdetail
select newid(), newid(1), newid(0x0)
select au_id, patindex("%circus%", copy) from blurbs
select pi()
select power(2, 3)
select radians(2578)
select rand()
select replicate("abcd", 3)
select reverse("abcde")
select right("abcde", 3)
select round(123.4545, 2)
select rtrim("aaa ")
select "aaa" + space(5) + "bbb"
select square(5)
select sqrt(25)
select str(12345.1234, 10, 4)
select str_replace("cdefghi","def","yyy")
select stuff("abc", 2, 3, "xyz")
select au_lname, substring(au_fname, 1, 1) from authors
select avg(advance), sum(total_sales) from titles where type = "business"
select upper("abcd")
year("11/02/03")
출처 : www.dbguide.net - ase 프로그래밍 가이드