데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

안녕하세요. 이호엽 입니다.

 

SQL Server TSQL 문법과 MySQL 문법은 유사한 점이 많습니다.

MySQL 사용자가 SQL Server 사용 , 혹은 반대로 SQL Server 사용자가 MySQL 사용

편하게 접근 있도록 도움이 될까 해서 비교 자료를 만들어 보았습니다.

테이블, 프로시저, 트리거, DB 운영에 관련된 스크립트 사용법에 대해서 비교하여 지속적으로

글을 적어볼까 합니다.

 

우선 이번에는 문자열 함수에 대해 10가지 정도 적어 보았습니다.

구분

SQL Server

MySQL

설명

가장 왼쪽 문자에 해당하는 ASCII 코드 출력

함수

ASCII

ASCII

예제

SELECT ASCII('A')

SELECT ASCII('A')

결과

65

65

 

구분

SQL Server

MySQL

설명

문자열에서 지정한 문자의 시작 위치 값을 반환 (왼쪽부터 문자씩 영어, 한글, 숫자, 기호 상관없이 글자 1 차지 하며 위치값은 1 부터 시작)

함수

CHARINDEX

INSTR

예제

SELECT CHARINDEX('크리', '나홀로크리스마스')

SELECT INSTR('나홀로크리스마스', '크리')

결과

4

4

 

구분

SQL Server

MySQL

설명

공백 제거 – SQL Server 선행, 후행 공백을 제거해주는 LTRIM, RTRIM 혼용 사용해야 하며 MySQL Trim 이란 함수가 , 후행 공백을 제거해 줍니다.

LTRIM(str), RTRIM(str) 함수도 따로 존재합니다.

함수

LTRIM() – 선행공백 제거

RTRIM() – 후행공백 제거

LTRIM() – 선행공백 제거

RTRIM() – 후행공백 제거

TRIM() – 양쪽공백 제거

예제

SELECT LTRIM( RTRIM(' 이제 빠져버렸어 '))

SELECT TRIM(' 이제 빠져 버렸어 ')

결과

이제 빠져 버렸어

이제 빠져 버렸어

 

구분

SQL Server

MySQL

설명

문자열의 왼쪽부터 지정된 수만큼 문자를 반환 (사용법 동일)

함수

LEFT

LEFT

예제

SELECT LEFT('메리크리스마스', 2)

SELECT LEFT('메리크리스마스', 2)

결과

메리

메리

 

구분

SQL Server

MySQL

설명

문자열의 오른쪽부터 지정된 수만큼 문자를 반환 (사용법 동일)

함수

RIGHT

RIGHT

예제

SELECT RIGHT('메리크리스마스', 2)

SELECT RIGHT('메리크리스마스', 2)

결과

마스

마스

 

구분

SQL Server

MySQL

설명

시작 위치에서 지정한 문자 길이를 삭제하고 다른 문자 집합을 삽입

함수명만 다르고 인자 순서, 사용법이 동일합니다.

함수

STUFF

INSERT

예제

SELECT STUFF('sad chritmas' , 1, 3, 'happy')

SELECT INSERT('sad chritmas' , 1, 3, 'happy')

결과

“happy chirtmas”

“happy chirtmas”

 

구분

SQL Server

MySQL

설명

지정한 사이즈가 문자열 길이 보다 적은 만큼 문자열 왼쪽부터 지정한 문자열을 채우는 처리를 합니다. MySQL 에서는 LPAD 기본함수가 제공 됩니다.

SQL Server 기본 함수가 제공되지 않으므로 필요에 따라 사용자 정의 함수를 만들어 사용해야 합니다.

함수

기본 제공 함수 없음

LPAD

예제

SELECT dbo.LPAD("ke some noise!!", 17, "!!")

SELECT LPAD("ke some noise!!", 17, "!!")

결과

make some noise!!

make some noise!!

 

-- LPAD 사용자 정의 함수 생성

-- WHILE 문을 이용 처리하는 방법도 있으나 len Replicate 사용법 명시

CREATE FUNCTION dbo.LPAD( @str AS VARCHAR(100), @len AS INT, @padstr AS VARCHAR(100) = '')

 RETURNS VARCHAR(2000)

AS

BEGIN

 RETURN

  CASE WHEN LEN(@str) >= @len THEN SUBSTRING(@str, 1, @len)

   ELSE SUBSTRING(REPLICATE( @padstr, @len), 1, @len - LEN(@str)) + @str END

END

 

구분

SQL Server

MySQL

설명

위에 LPAD 반대로 지정한 문자열을 오른쪽부터 채워줍니다.

MySQL 에서는 RPAD 기본 함수가 제공됩니다.

마찬가지로 SQL Server 에서는 필요에 따라 사용자 정의 함수를 만들어 사용해야 합니다.

함수

기본 제공 함수 없음

RPAD

예제

SELECT dbo.RPAD("make some noise!!", 17, "!!")

SELECT RPAD("make some noise!!", 17, "!!")

결과

make some noise!!

make some noise!!

 

-- RPAD 사용자 정의 함수 생성

-- WHILE 문을 이용 처리하는 방법도 있으나 len Replicate 사용법 명시

CREATE FUNCTION dbo.RPAD( @str AS VARCHAR(100), @len AS INT, @padstr AS VARCHAR(100) = '')

 RETURNS VARCHAR(2000)

AS

BEGIN

 RETURN

  CASE WHEN LEN(@str) >= @len THEN SUBSTRING(@str, 1, @len)

   ELSE @str + SUBSTRING(REPLICATE( @padstr, @len), 1, @len - LEN(@str)) END

END

 

구분

SQL Server

MySQL

설명

지정한 문자열의 길이를 반환 합니다.

SQL Server 후행 공백을 무시하지만 MySQL CHAR_LENGTH 함수는 공백도

포함하여 길이를 반환합니다.

함수

기본 제공 함수 없음

RPAD

예제

select LEN('abc  ')

SELECT CHAR_LENGTH('abc  ')

결과

3

5

 

구분

SQL Server

MySQL

설명

문자열을 합하여 결과를 출력

함수

+ 연산자를 통해 처리

CONCAT

예제

SELECT 'SQLER Members' + ' Victory!!'

SELECT CONCAT('SQLER Members',' Victory!!')

결과

SQLER Members Victory!!

SQLER Members Victory!!

 

No. Subject Author Date Views
2190 MSSQL과 Oracle 함수 비교 3탄 - 9가지 함수(마지막) [5] 쓸만한게없네(윤선식) 2010.11.08 81484
2189 DB 오류검사기록 테이블, 백업할때 오류정보 기록테이블 [3] 차주언 2011.07.20 56462
2188 10_SQL 2008 강좌 - (1) DB관리 - DB 축소(SHRINK) [8] jevida(강성욱) 2011.03.01 50812
2187 Linked Server Open Query 이용 시 USE 명령어 사용하기 [1] 쓸만한게없네(윤선식) 2012.11.07 50664
2186 sa 비밀번호를 잊어먹었을 때 대처방법 [8] 이스트럭(강동운) 2011.06.13 46802
2185 SSMS 줄 번호 표시 jevida(강성욱) 2015.03.26 46530
2184 SMO를 이용한 DB백업 [3] 우주인(김재훈) 2011.03.17 45006
2183 [TIP]MSSQL 와일드 카드를 이용한 검색과 주의점 [16] 쓸만한게없네 2010.10.12 44197
2182 프로파일러 사용법. (완전 초보자 기준!) [10] jevida(강성욱) 2011.04.26 43387
2181 SSMS 단축키. [12] 쓸만한게없네(윤선식) 2011.02.07 43100
2180 SQL Server 로긴 유저 및 각 DB별 사용자 권한 조회 [1] 문연군 2010.12.20 42279
2179 MSSQL과 Oracle 함수 비교 2탄 - 9가지 함수 [10] 쓸만한게없네(윤선식) 2010.10.27 41883
2178 Microsoft.ACE.OLEDB.12.0 을 이용한 엑셀 2010 직접쿼리하기 [3] 열이 2013.03.20 41523
2177 DBCC TRACE ... [4] 이스트럭(강동운) 2012.04.13 40939
» SQL Server 와 MySQL 문자열 함수 비교 10 가지 [5] 이호엽 2010.12.29 38229
2175 SQL2012는 SSMS의 시작 옵션(Startup option) 설정 위치가 바뀌었어요. [1] 코난(김대우) 2012.01.13 37459
2174 MSSQL과 Oracle 함수 비교 - 첫번째 10가지 함수. [7] 쓸만한게없네(윤선식) 2010.10.25 35823
2173 CONVERT 스타일 별 결과 값 [3] Alucard(강산아) 2010.10.14 35497
2172 트랜잭션 열린넘 있으면 로그백업할때 사이즈가 커진다!! [5] 차주언 2009.12.02 33535
2171 초간단 - 알만한 사람은 다 아는 읽고, 쓰고, 실행하는 권한만 주기 스크립트. [2] 쓸만한게없네(윤선식) 2011.07.21 32939





XE Login