1. select top (100) Percent * from table
Select 검색 시 표시 하고자 하는 목록 수를 제한 할때 Top를 사용하는데 'Percent'를 적용하여 전체 목록에 백분율을 적용해 볼수도 있다.
MySql ==>없음.. 검색 해 보니 어떤분이 직접 쿼리를 작성하신 분이 계신듯 한데.. 전 그냥 무시.
Mysql 에서는 'Limit' 사용하여 범위를 지정 할 수 있음
예) select * from table limit 5, 10 (5 번부터 10 개)
2. convert(varchar(10), GetDate() 또는 date_column, 121(시간 표시 형태)) 뭐징??
날짜를 출력 하는 MSSQL 함수 (2013-03-18 16:08:25.123) 로 첫번째 인자로 인하여 10자리까지만 출력이 됨..
MySql ==>date_format(now() 또는 date_column, '%Y-%m-%d %T') 식으로 해주면 됨. (Y-m-d T 대소문자에 주의 하자)
(MsSql) convert(변환 자료형 , 값 )
(MySql) convert(값 , 변환 자료형 ) 사용법은 같으나 인자 위치가 다르다.(varchar ==> char)
3. REPLICATE('0', 10)
첫 인수를 두번째 인수만큼 문자열로 만들어준다.
MySql ==> 에서는 없음. 함수로 직접 등록
DELIMITER $$
CREATE FUNCTION REPLICATE(charvar TEXT, intvar INT) RETURNS TEXT
BEGIN
DECLARE nCnt INT DEFAULT 0;
DECLARE char_string TEXT DEFAULT '';
WHILE (nCnt < intvar) DO
SET char_string = CONCAT(char_string, charvar);
SET nCnt = nCnt+1;
END WHILE;
RETURN char_string;
END $$
DELIMITER;
4. LEN( ), CAST(Int_column AS VARCHAR)
Int_column 컬럼의 값을 문자로 변환 후 문자열 길이를 얻기.
참고) LEN() => 문자열의 길이 'aa' =>2, '안녕' => 2
DataLength() => 바이트의 크기 'aa' => 2, '안녕' => 4
MySql ==> LENGTH( CAST(Int_column AS CHAR) )
LEN => LENGTH() 변경 (바이트의 크기를 반환함)
CAST : 변경 타입이 바뀜 (binary, char, date, datetime,decimal, signed, unsigned, time)
5. ROW_NUMBER() OVER(Order by column_name)
Over(column_name)에 의해 정렬된 순서대로 번호 생성
MySql ==> (SELECT @rownum:=@rownum+1 as index , T.* FROM (select @rownum:=0) as rownum_init ,
information_schema.tables as T where ....... order by ...
함수로는 지원하지 않으며 위와 같이 쿼리 호출 시 해당 명령을 추가해 추면 된다.
참고) View 에서 'rownum' 값을 얻고자 할 경우에는 'from' 절에 Select가 위치 할 수 없는 제약 조건으로 생성할 수 없다.
이럴 경우 프로시져를 만들어 호출 하는 방법으로 바꿔야 할 듯 싶다.
6. DATEDIFF(추출단위, 뺄 값, 대상 값)
MsSql => 3 가지의 인자가 필요 하며 대상 값에서 뺄 값을 뺀 후 추출단위에 맞게 값을 리턴한다.
추출단위 : year, month(m), day(d), hour, minute(mi), second(s)
select DATEDIFF(d, '2013-03-19', '2013-03-20') ==> 1
select DATEDIFF(second, '10:00:00', '10:00:10') ==> 10
참고) 'getdate() + 1' 을 하면 하루가 더해진 값이 나온다.
MySql => DATEDIFF(대상 값, 뺄 값), TIMEDIFF(대상 값, 뺄 값)
mysql 날짜와 시간 계산 하는 함수가 따로 있음.
select DATEDIFF('2013-03-20', '2013-03-19') => 1 (결과 값은 Day 기존)
select TIMEDIFF('10:00:20', '10:00:00') => 00:00:20
시간의 경우 각 단위로 전환 해주는 함수가 별도로 있음. HOUR(), MINUTE(), SECOND();
select HOUR(TIMEDIFF('10:00:20', '10:00:00')) => 0
select SECOND(TIMEDIFF('10:00:20', '10:00:00')) => 20
7. ISNULL(값1, 값2)
MsSql => '값1' 이 'NULL' 이면 '값2' 를 반환한다. (둘다 NULL 이면 NULL 반환)
MySql => ISNULL(값1) '값1' 이 NULL 이면 1, 아니면 0
MySql => IFNULL(값1, 값2) 가 MsSql 의 ISNULL() 과 같은 기능
'Programing > DataBase' 카테고리의 다른 글
[DB] 위도,경도를 이용한 두 위치사이의 거리 구하기 (0) | 2014.08.25 |
---|---|
[DB] iBatis에서 jdbcType (0) | 2014.03.10 |
[DB] MS-SQL 재귀계층쿼리 요약 (0) | 2014.01.08 |
[DB] ORACLE SQL DEVELOPER 에서 MS-SQL 사용하기 (0) | 2014.01.07 |
[DB] MS-SQL 날짜변환함수 정리 (0) | 2014.01.07 |
[DB] OUTER JOIN에 대해 (0) | 2013.11.22 |
[DB] iBatis 정리 (0) | 2013.09.02 |