Microsoft SQL Server
문자열 함수
수색…
비고
문자열 함수 목록 (알파벳순 정렬) :
왼쪽
문자열의 가장 왼쪽 문자부터 시작하여 지정된 최대 길이까지의 하위 문자열을 반환합니다.
매개 변수 :
- 문자 표현. 문자 표현식은
text
또는ntext
제외하고 암시 적으로varchar
또는nvarchar
로 변환 할 수있는 모든 데이터 유형이 될 수 있습니다 - 최대 길이. 0과
bigint
최대 값 사이의 정수입니다 (9,223,372,036,854,775,807).
최대 길이 매개 변수가 음수이면 오류가 발생합니다.
SELECT LEFT('This is my string', 4) -- result: 'This'
최대 길이가 문자열의 문자 수보다 많으면 entier 문자열이 반환됩니다.
SELECT LEFT('This is my string', 50) -- result: 'This is my string'
권리
지정된 최대 길이를 사용하여 문자열의 가장 오른쪽 부분 인 하위 문자열을 반환합니다.
매개 변수 :
- 문자 표현. 문자 표현식은
text
또는ntext
제외하고 암시 적으로varchar
또는nvarchar
로 변환 할 수있는 모든 데이터 유형이 될 수 있습니다 - 최대 길이. 0과
bigint
최대 값 사이의 정수입니다 (9,223,372,036,854,775,807). 최대 길이 매개 변수가 음수이면 오류가 발생합니다.
SELECT RIGHT('This is my string', 6) -- returns 'string'
최대 길이가 문자열의 문자 수보다 많으면 entier 문자열이 반환됩니다.
SELECT RIGHT('This is my string', 50) -- returns 'This is my string'
하위 문자열
지정된 시작 인덱스와 지정된 최대 길이에있는 char로 시작하는 하위 문자열을 반환합니다.
매개 변수 :
- 문자 표현. 문자 표현식은
text
또는ntext
제외하고varchar
또는nvarchar
로 암시 적으로 변환 할 수있는 모든 데이터 유형이 될 수 있습니다. - 색인을 시작하십시오. 요청 된 하위 문자열의 시작 인덱스를 지정하는 숫자 (
int
또는bigint
)입니다. ( 참고 : SQL 서버의 문자열은 기본 1 색인이며 문자열의 첫 번째 문자는 색인 1임을 의미합니다. 이 수는 1보다 작을 수 있습니다.이 경우, 시작 인덱스와 최대 길이의 합이 0보다 큰 경우 리턴. 자열은. 자 표현식의 첫 x 째 문자에서 시작하여 길이가 (start index 최대 길이 - 1). 0보다 작 으면 빈 문자열이 반환됩니다. - 최대 길이. 0과
bigint
최대 값 사이의 정수입니다 (9,223,372,036,854,775,807). 최대 길이 매개 변수가 음수이면 오류가 발생합니다.
SELECT SUBSTRING('This is my string', 6, 5) -- returns 'is my'
최대 길이 + 시작 인덱스가 문자열의 문자 수보다 많으면 entier 문자열이 반환됩니다.
SELECT SUBSTRING('Hello World',1,100) -- returns 'Hello World'
시작 인덱스가 문자열의 문자 수보다 크면 빈 문자열이 반환됩니다.
SELECT SUBSTRING('Hello World',15,10) -- returns ''
ASCII
문자열의 가장 왼쪽 문자의 ASCII 코드를 나타내는 int 값을 반환합니다.
SELECT ASCII('t') -- Returns 116
SELECT ASCII('T') -- Returns 84
SELECT ASCII('This') -- Returns 84
문자열이 유니 코드이고 가장 왼쪽 문자가 ASCII가 아니지만 현재 데이터 정렬에서 표현 가능한 경우 127보다 큰 값이 반환 될 수 있습니다.
SELECT ASCII(N'ï') -- returns 239 when `SERVERPROPERTY('COLLATION') = 'SQL_Latin1_General_CP1_CI_AS'`
문자열이 유니 코드이고 가장 왼쪽 문자가 현재 데이터 정렬에 표시되지 않으면 63의 int 값이 반환됩니다 (ASCII의 물음표를 나타냄).
SELECT ASCII(N'߷') -- returns 63
SELECT ASCII(nchar(2039)) -- returns 63
CharIndex
다른 문자열 표현식에서 첫 번째 문자열 표현식의 시작 색인을 리턴합니다.
매개 변수 목록 :
- 찾을 문자열 (최대 8000 자)
- 검색 할 문자열 (모든 유효한 문자 데이터 유형 및 길이, 바이너리 포함)
- (선택 사항) 시작할 색인. int 형 또는 big int 형의 수. 생략되거나 1보다 작 으면 문자열 시작 부분에서 검색이 시작됩니다.
검색 할 문자열이 varchar(max)
, nvarchar(max)
또는 varbinary(max)
이면 CHARINDEX
함수는 bigint
값을 반환합니다. 그렇지 않으면 int
를 리턴합니다.
SELECT CHARINDEX('is', 'this is my string') -- returns 3
SELECT CHARINDEX('is', 'this is my string', 4) -- returns 6
SELECT CHARINDEX(' is', 'this is my string') -- returns 5
숯
int ASCII 코드로 나타나는 char를 돌려줍니다.
SELECT CHAR(116) -- Returns 't'
SELECT CHAR(84) -- Returns 'T'
새로운 행 / 줄 바꿈 CHAR(10)
, 캐리지 리턴 CHAR(13)
등을 도입하는 데 사용할 수 있습니다. 참조를 위해 AsciiTable.com 을 참조하십시오.
인수 값이 0과 255 사이가 아니면 CHAR 함수는 NULL
리턴 NULL
.
CHAR
함수의 리턴 데이터 유형은 char(1)
렌
문자열의 문자 수를 반환합니다.
참고 : LEN
함수는 후행 공백을 무시합니다.
SELECT LEN('My string'), -- returns 9
LEN('My string '), -- returns 9
LEN(' My string') -- returns 12
후미 공백을 포함하는 길이가 필요한 경우이를 달성하기위한 몇 가지 기술이 있지만 각각에 단점이 있습니다. 한 가지 기술은 문자열에 단일 문자를 추가 한 다음 LEN
에서 하나 빼기를 사용하는 것입니다.
DECLARE @str varchar(100) = 'My string '
SELECT LEN(@str + 'x') - 1 -- returns 12
단점은 문자열 변수 또는 열의 유형이 최대 길이이고 추가 문자의 추가가 삭제되고 결과 길이가 여전히 후행 공백을 포함하지 않는 경우입니다. 이 문제를 해결하기 위해 다음 수정 된 버전은 문제를 해결하고 추가 실행 시간이 적기 때문에 모든 경우에 올바른 결과를 제공합니다.이 때문에 (서로 게이트 쌍을 포함하여 올바른 결과와 합리적인 실행 속도) 사용하기에 가장 좋은 기법 인 것처럼 보입니다.
SELECT LEN(CONVERT(NVARCHAR(MAX), @str) + 'x') - 1
또 다른 기술은 DATALENGTH
함수를 사용하는 것입니다.
DECLARE @str varchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 12
DATALENGTH
가 메모리에있는 문자열의 길이 (바이트)를 리턴하지만 주목해야합니다. 이 varchar
대 nvarchar
다릅니다.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 24
문자열의 데이터 길이를 단일 문자 (동일한 유형이어야 함)의 데이터 길이로 나눠서 조정할 수 있습니다. 아래 예제에서는이 작업을 수행하며 대상 문자열이 비어있는 경우도 처리하므로 0으로 나누는 것을 피할 수 있습니다.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) / DATALENGTH(LEFT(LEFT(@str, 1) + 'x', 1)) -- returns 12
그러나이 경우에도 SQL Server 2012 이상에서는 문제가 발생합니다. 문자열에 서로 게이트 쌍 (일부 문자는 같은 문자열에서 다른 문자보다 많은 바이트를 차지할 수 있음)이 포함 된 경우 잘못된 결과가 생성됩니다.
또 다른 방법은 REPLACE
를 사용하여 공백을 공백이 아닌 문자로 변환 한 다음 결과의 LEN
을 가져 오는 것입니다. 이렇게하면 모든 경우에 올바른 결과를 얻을 수 있지만 긴 문자열의 경우 실행 속도가 매우 느립니다.
콩 카트
함께 결합 된 두 개 이상의 문자열의 결과 인 문자열을 반환합니다. CONCAT
은 두 개 이상의 인수를 허용합니다.
SELECT CONCAT('This', ' is', ' my', ' string') -- returns 'This is my string'
참고 : 문자열 연결 연산자 ( +
)를 사용하여 문자열을 연결하는 것과 달리 concat
함수에 null 값을 전달하면이 문자열이 암시 적으로 빈 문자열로 변환됩니다.
SELECT CONCAT('This', NULL, ' is', ' my', ' string'), -- returns 'This is my string'
'This' + NULL + ' is' + ' my' + ' string' -- returns NULL.
또한 문자열이 아닌 형식의 인수는 암시 적으로 문자열로 변환됩니다.
SELECT CONCAT('This', ' is my ', 3, 'rd string') -- returns 'This is my 3rd string'
문자열이 아닌 변수도 문자열 형식으로 변환되므로 수동으로 변환하거나 문자열로 변환 할 필요가 없습니다.
DECLARE @Age INT=23;
SELECT CONCAT('Ram is ', @Age,' years old'); -- returns 'Ram is 23 years old'
이전 버전은 CONCAT
함수를 지원하지 않으므로 대신 문자열 연결 연산자 ( +
)를 사용해야합니다. 비 문자열 유형은 이러한 방식으로 연결하기 위해 유형 변환 또는 캐스트 변환해야합니다.
SELECT 'This is the number ' + CAST(42 AS VARCHAR(5)) --returns 'This is the number 42'
보다 낮은
모든 대문자를 소문자로 변환 한 후 문자 식 ( varchar
또는 nvarchar
)을 반환합니다.
매개 변수 :
- 문자 표현. 암시 적으로
varchar
로 변환 할 수있는 문자 또는 이진 데이터 표현입니다.
SELECT LOWER('This IS my STRING') -- Returns 'this is my string'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT LOWER(@String) -- Returns 'this is my string'
높은
모든 소문자를 대문자로 변환 한 후 문자 식 ( varchar
또는 nvarchar
)을 반환합니다.
매개 변수 :
- 문자 표현. 암시 적으로
varchar
로 변환 할 수있는 문자 또는 이진 데이터 표현입니다.
SELECT UPPER('This IS my STRING') -- Returns 'THIS IS MY STRING'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT UPPER(@String) -- Returns 'THIS IS MY STRING'
LTrim
앞에 오는 공백을 모두 제거한 후 문자 식 ( varchar
또는 nvarchar
)을 반환합니다. 즉, 왼쪽부터 첫 번째 공백이 아닌 공백 문자까지 공백을 제거합니다.
매개 변수 :
- 문자 표현.
text
,ntext
및image
제외하고 암시 적으로varcher
로 변환 될 수있는 문자 또는 이진 데이터 표현입니다.
SELECT LTRIM(' This is my string') -- Returns 'This is my string'
RTrim
후행 공백을 모두 제거한 후 문자의 식 ( varchar
또는 nvarchar
)을 반환합니다. 즉, 문자열의 오른쪽 끝부터 공백이 아닌 첫 번째 공백 문자까지 왼쪽의 공백을 제거합니다.
매개 변수 :
- 문자 표현.
text
,ntext
및image
제외하고 암시 적으로varcher
로 변환 될 수있는 문자 또는 이진 데이터 표현입니다.
SELECT RTRIM('This is my string ') -- Returns 'This is my string'
유니 코드
입력 식의 첫 문자의 유니 코드 값을 나타내는 정수 값을 반환합니다.
매개 변수 :
- 유니 코드 문자 표현. 모든 유효한
nchar
또는nvarchar
식입니다.
SELECT UNICODE(N'Ɛ') -- Returns 400
DECLARE @Unicode nvarchar(11) = N'Ɛ is a char'
SELECT UNICODE(@Unicode) -- Returns 400
NChar
유니 코드 표준에 정의 된대로받은 정수 인수에 해당하는 유니 코드 문자 ( nchar(1)
또는 nvarchar(2)
)를 반환합니다.
매개 변수 :
- 정수 표현. 0부터 65535 사이의 양수인 모든 정수 표현식 또는 데이터베이스의 데이터 정렬이 보조 문자 (CS) 플래그를 지원하는 경우 지원되는 범위는 0에서 1114111 사이입니다. 정수 표현식이이 범위 내에 있지 않으면
null
입니다. 반환되었습니다.
SELECT NCHAR(257) -- Returns 'ā'
SELECT NCHAR(400) -- Returns 'Ɛ'
역
문자열 값을 역순으로 반환합니다.
매개 변수 :
- 문자열 식. 암시 적으로
varchar
로 변환 할 수있는 모든 문자열 또는 이진 데이터입니다.
Select REVERSE('Sql Server') -- Returns 'revreS lqS'
PatIndex
지정된 표현식에서 지정된 패턴의 첫 번째 발생 위치를 반환합니다.
매개 변수 :
무늬. 문자 식은 발견 될 수열을 포함합니다. 8000 자의 최대 길이로 제한됩니다. 와일드 카드 (
%
,_
)를 패턴에 사용할 수 있습니다. 패턴이 와일드 카드로 시작하지 않으면 표현식의 시작 부분에있는 것과 일치 할 수 있습니다. 와일드 카드로 끝나지 않으면 표현식의 끝에있는 것과 일치 할 수 있습니다.표현. 모든 문자열 데이터 형식입니다.
SELECT PATINDEX('%ter%', 'interesting') -- Returns 3.
SELECT PATINDEX('%t_r%t%', 'interesting') -- Returns 3.
SELECT PATINDEX('ter%', 'interesting') -- Returns 0, since 'ter' is not at the start.
SELECT PATINDEX('inter%', 'interesting') -- Returns 1.
SELECT PATINDEX('%ing', 'interesting') -- Returns 9.
공간
반복되는 공백의 문자열 ( varchar
)을 반환합니다.
매개 변수 :
- 정수 표현. 모든 정수 표현식 (최대 8000). 음수 일 경우
null
이 반환됩니다. 0이면 빈 문자열이 반환됩니다. (8000보다 긴 문자열을 반환하려면 Replicate를 사용하십시오.
SELECT SPACE(-1) -- Returns NULL
SELECT SPACE(0) -- Returns an empty string
SELECT SPACE(3) -- Returns ' ' (a string containing 3 spaces)
뒤로 젖히다
지정된 횟수만큼 문자열 값을 반복합니다.
매개 변수 :
- 문자열 식. 문자열 표현식은 문자열 또는 2 진 데이터가 될 수 있습니다.
- 정수 표현.
bigint
포함한 모든 정수 유형입니다. 부의 경우,null
가 리턴됩니다. 0이면 빈 문자열이 리턴됩니다.
SELECT REPLICATE('a', -1) -- Returns NULL
SELECT REPLICATE('a', 0) -- Returns ''
SELECT REPLICATE('a', 5) -- Returns 'aaaaa'
SELECT REPLICATE('Abc', 3) -- Returns 'AbcAbcAbc'
참고 : 문자열 표현식이 varchar(max)
또는 nvarchar(max)
유형이 아닌 경우 반환 값은 8000자를 초과하지 않습니다. 반환 값이 한계를 초과하게하는 문자열을 추가하기 전에 복제가 중지됩니다.
SELECT LEN(REPLICATE('a b c d e f g h i j k l', 350)) -- Returns 7981
SELECT LEN(REPLICATE(cast('a b c d e f g h i j k l' as varchar(max)), 350)) -- Returns 8050
바꾸다
지정된 하위 문자열의 모든 항목이 다른 하위 문자열로 대체되는 문자열 ( varchar
또는 nvarchar
)을 반환합니다.
매개 변수 :
- 문자열 식. 이것은 검색 될 문자열입니다. 문자 또는 2 진 데이터 유형이 될 수 있습니다.
- 무늬. 이것은 대체 될 하위 문자열입니다. 문자 또는 2 진 데이터 유형이 될 수 있습니다. pattern 인수는 빈 문자열 일 수 없습니다.
- 바꿔 놓음. 이것은 패턴 하위 문자열을 대체 할 하위 문자열입니다. 문자 또는 2 진 데이터가 될 수 있습니다.
SELECT REPLACE('This is my string', 'is', 'XX') -- Returns 'ThXX XX my string'.
노트:
- 문자열 표현식이
varchar(max)
또는nvarchar(max)
유형이 아닌 경우replace
함수는 8,000 자의 반환 값을 자릅니다. - 반환 데이터 형식은 입력 데이터 유형에 따라 다릅니다 - 반환
nvarchar
입력 값 중 하나 인 경우nvarchar
, 또는varchar
그렇지. - 입력 매개 변수 중 하나라도
NULL
이면NULL
반환NULL
String_Split
문자 분리 기호를 사용하여 문자열 표현식을 분할합니다. STRING_SPLIT()
은 테이블 반환 함수이므로 FROM
절 내 FROM
사용해야합니다.
매개 변수 :
- 끈. 모든 문자 유형 표현식 (
char
,nchar
,varchar
또는nvarchar
) - 분리기. 모든 유형 (
char(1)
,nchar(1)
,varchar(1)
또는nvarchar(1)
)의 단일 문자 표현식입니다.
각 행에 문자열의 일부가 포함 된 단일 열 테이블을 반환합니다. 컬럼의 이름은 value
및 데이터 유형은 nvarchar
매개 변수 중 하나 인 경우 nchar
또는 nvarchar
달리, varchar
.
다음 예제에서는 공백을 구분 기호로 사용하여 문자열을 분할합니다.
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
결과:
value
-----
Lorem
ipsum
dolor
sit
amet.
비고 :
STRING_SPLIT
기능은 호환성 수준 130 에서만 사용할 수 있습니다. 데이터베이스 호환성 수준이 130보다 낮 으면 SQL Server는STRING_SPLIT
함수를 찾아서 실행할 수 없습니다. 다음 명령을 사용하여 데이터베이스의 호환성 수준을 변경할 수 있습니다.
ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
SQL Server의 이전 버전에는 분할 문자열 기능이 내장되어 있지 않습니다. 문자열 분할 문제를 처리하는 많은 사용자 정의 함수가 있습니다. Aaron Bertrand의 기사 인 Split strings을 올바른 방법으로 읽 거나 그 중 일부를 포괄적으로 비교할 수있는 차선책을 읽을 수 있습니다.
스트레스
숫자 데이터에서 변환 된 문자 데이터 ( varchar
)를 반환합니다.
매개 변수 :
- float 표현식. 소수점이있는 근사 숫자 데이터 유형입니다.
- 길이. 선택 과목. 숫자, 소수점 및 선행 공백 (필요한 경우)을 포함하여 반환 할 문자열 식의 총 길이입니다. 기본값은 10입니다.
- 소수. 선택 과목. 소수점 오른쪽의 자릿수입니다. 16보다 크면 결과는 소수점 오른쪽의 16 자리로 잘립니다.
SELECT STR(1.2) -- Returns ' 1'
SELECT STR(1.2, 3) -- Returns ' 1'
SELECT STR(1.2, 3, 2) -- Returns '1.2'
SELECT STR(1.2, 5, 2) -- Returns ' 1.20'
SELECT STR(1.2, 5, 5) -- Returns '1.200'
SELECT STR(1, 5, 2) -- Returns ' 1.00'
SELECT STR(1) -- Returns ' 1'
따옴표 이름
구분 기호로 묶인 유니 코드 문자열을 반환하여 올바른 SQL Server 구분 식별자로 만듭니다.
매개 변수 :
- 문자열. 최대 128 자 (
sysname
)의 유니 코드 데이터 문자열입니다. 입력 문자열이 128자를 초과하면 function은null
반환합니다. - 인용 문자. 선택 사항 . 구분 기호로 사용할 단일 문자입니다. (작은 따옴표를 할 수있다
'
또는``), 왼쪽 또는 오른쪽 브래킷 ({
,[
,(
,<
나>
,)
,]
,}
) 또는 큰 따옴표 ("
). 다른 값은 null을 반환합니다 기본값은 대괄호입니다.
SELECT QUOTENAME('what''s my name?') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '[') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', ']') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '''') -- Returns 'what''s my name?'
SELECT QUOTENAME('what''s my name?', '"') -- Returns "what's my name?"
SELECT QUOTENAME('what''s my name?', ')') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '(') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '<') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '>') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '{') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '}') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '`') -- Returns `what's my name?`
Soundex
두 문자열의 음 성 유사성을 평가하는 4 자 코드 ( varchar
)를 반환합니다.
매개 변수 :
- 문자 표현. 문자 데이터의 영숫자 표현입니다.
soundex 함수는 말 할 때 문자식이 어떻게 들릴지를 기반으로 4 문자 코드를 만듭니다. 첫 번째 문자는 매개 변수의 첫 번째 문자의 대문자 버전이며, 나머지 세 문자는 표현식에서 문자를 나타내는 숫자입니다 (무시되는 a, e, i, o, u, h, w 및 y 제외) .
SELECT SOUNDEX ('Smith') -- Returns 'S530'
SELECT SOUNDEX ('Smythe') -- Returns 'S530'
차
두 문자 식의 soundex 값 간의 차이를 나타내는 정수 ( int
) 값을 반환합니다.
매개 변수 :
- 문자 표현 1.
- 문자 표현 2.
두 매개 변수는 문자 데이터의 영숫자 표현입니다.
반환되는 정수는 동일한 매개 변수의 soundex 값에있는 문자 수이므로 4는 표현식이 매우 유사하고 0은 매우 다르다는 것을 의미합니다.
SELECT SOUNDEX('Green'), -- G650
SOUNDEX('Greene'), -- G650
DIFFERENCE('Green','Greene') -- Returns 4
SELECT SOUNDEX('Blotchet-Halls'), -- B432
SOUNDEX('Greene'), -- G650
DIFFERENCE('Blotchet-Halls', 'Greene') -- Returns 0
체재
지정된 형식 및 문화권 (지정된 경우)으로 서식이 지정된 NVARCHAR
값을 반환합니다. 이것은 주로 날짜 - 시간 유형을 문자열로 변환하는 데 사용됩니다.
매개 변수 :
-
value
. 형식화 할 지원되는 데이터 유형의 표현식. 유효한 유형은 다음과 같습니다. -
format
.NVARCHAR
형식 패턴입니다. 표준 및 사용자 정의 형식 문자열은 Microsoft 공식 설명서를 참조하십시오. -
culture
. 선택 사항 . culture를 지정하는nvarchar
인수 기본값은 현재 세션의 culture입니다.
날짜
표준 형식 문자열 사용 :
DECLARE @d DATETIME = '2016-07-31';
SELECT
FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result' -- Returns '7/31/2016'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31/07/2016'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result' -- Returns '31.07.2016'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result' -- Returns '2016/7/31'
,FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result' -- Returns 'Sunday, July 31, 2016'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31 July 2016'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result' -- Returns 'Sonntag, 31. Juli 2016'
사용자 정의 형식 문자열 사용 :
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' -- Returns '31/07/2016'
,FORMAT(123456789,'###-##-####') AS 'Custom Number Result' -- Returns '123-45-6789',
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','en-US') AS 'US' -- Returns 'Sunday, July 31, 2016 12:00:00 AM'
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','hi-IN') AS 'Hindi' -- Returns रविवार, जुलाई 31, 2016 12:00:00 पूर्वाह्न
,FORMAT ( @d, 'dddd', 'en-US' ) AS 'US' -- Returns 'Sunday'
,FORMAT ( @d, 'dddd', 'hi-IN' ) AS 'Hindi' -- Returns 'रविवार'
FORMAT
은 CURRENCY
, PERCENTAGE
및 NUMBERS
형식을 지정할 때도 사용할 수 있습니다.
통화
DECLARE @Price1 INT = 40
SELECT FORMAT(@Price1,'c','en-US') AS 'CURRENCY IN US Culture' -- Returns '$40.00'
,FORMAT(@Price1,'c','de-DE') AS 'CURRENCY IN GERMAN Culture' -- Returns '40,00 €'
10 진수 다음에 자릿수를 지정할 수 있습니다.
DECLARE @Price DECIMAL(5,3) = 40.356
SELECT FORMAT( @Price, 'C') AS 'Default', -- Returns '$40.36'
FORMAT( @Price, 'C0') AS 'With 0 Decimal', -- Returns '$40'
FORMAT( @Price, 'C1') AS 'With 1 Decimal', -- Returns '$40.4'
FORMAT( @Price, 'C2') AS 'With 2 Decimal', -- Returns '$40.36'
백분율
DECLARE @Percentage float = 0.35674
SELECT FORMAT( @Percentage, 'P') AS '% Default', -- Returns '35.67 %'
FORMAT( @Percentage, 'P0') AS '% With 0 Decimal', -- Returns '36 %'
FORMAT( @Percentage, 'P1') AS '% with 1 Decimal' -- Returns '35.7 %'
번호
DECLARE @Number AS DECIMAL(10,2) = 454545.389
SELECT FORMAT( @Number, 'N','en-US') AS 'Number Format in US', -- Returns '454,545.39'
FORMAT( @Number, 'N','en-IN') AS 'Number Format in INDIA', -- Returns '4,54,545.39'
FORMAT( @Number, '#.0') AS 'With 1 Decimal', -- Returns '454545.4'
FORMAT( @Number, '#.00') AS 'With 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '#,##.00') AS 'With Comma and 2 Decimal', -- Returns '454,545.39'
FORMAT( @Number, '##.00') AS 'Without Comma and 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '000000000') AS 'Left-padded to nine digits' -- Returns '000454545'
유효한 값 유형 목록 : ( 소스 )
Category Type .Net type
-------------------------------------------
Numeric bigint Int64
Numeric int Int32
Numeric smallint Int16
Numeric tinyint Byte
Numeric decimal SqlDecimal
Numeric numeric SqlDecimal
Numeric float Double
Numeric real Single
Numeric smallmoney Decimal
Numeric money Decimal
Date and Time date DateTime
Date and Time time TimeSpan
Date and Time datetime DateTime
Date and Time smalldatetime DateTime
Date and Time datetime2 DateTime
Date and Time datetimeoffset DateTimeOffset
중요 사항 :
-
FORMAT
은 올바르지 않은 culture가 아닌 다른 오류의 경우NULL
을 반환합니다. 예를 들어, format에 지정된 값이 유효하지 않으면NULL
이 반환됩니다. -
FORMAT
은 .NET Framework CLR (Common Language Runtime)의 존재 여부에 의존합니다. -
FORMAT
은 콜론 및 마침표를 이스케이프 처리해야한다는 CLR 형식 지정 규칙을 사용합니다. 따라서 형식 문자열 (두 번째 매개 변수)에 콜론 또는 마침표가 포함 된 경우 입력 값 (첫 번째 매개 변수)이 시간 데이터 형식 인 경우 콜론 또는 마침표는 백 슬래시로 이스케이프해야합니다.
FORMAT 문서 예제를 사용한 날짜 및 시간 형식 지정을 참조하십시오.
String_escape
텍스트의 특수 문자를 이스케이프 처리하고 이스케이프 문자로 텍스트 ( nvarchar(max)
)를 반환합니다.
매개 변수 :
본문. 이스케이프해야하는 문자열을 나타내는
nvarchar
식입니다.유형. 적용될 규칙을 이스케이프 처리합니다. 현재 지원되는 유일한 값은
'json'
입니다.
SELECT STRING_ESCAPE('\ /
\\ " ', 'json') -- returns '\\\t\/\n\\\\\t\"\t'
이스케이프 될 문자 목록 :
Special character Encoded sequence
-------------------------------------
Quotation mark (") \"
Reverse solidus (\) \\
Solidus (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t
Control character Encoded sequence
------------------------------------
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f