수색…


소개

문자열 함수는 문자열 값에 대한 연산을 수행하고 숫자 또는 문자열 값을 반환합니다.

문자열 함수를 사용하여 예를 들어 데이터 결합, 하위 문자열 추출, 문자열 비교 또는 문자열을 모두 대문자 또는 소문자로 변환 할 수 있습니다.

통사론

  • CONCAT (string_value1, string_value2 [, string_valueN])
  • LTRIM (문자 _ 표현식)
  • RTRIM (문자 _ 표현식)
  • SUBSTRING (표현식, 시작, 길이)
  • ASCII (문자 _ 표현식)
  • 복제 (string_expression, integer_expression)
  • 거꾸로 (string_expression)
  • UPPER (문자 _ 표현식)
  • TRIM ([문자 FROM] 문자열)
  • STRING_SPLIT (문자열, 구분 기호)
  • 직원 (character_expression, start, length, replaceWith_expression)
  • REPLACE (string_expression, string_pattern, string_replacement)

비고

Transact-SQL / Microsoft 용 문자열 함수 참조

MySQL 용 문자열 함수 참조

PostgreSQL 용 문자열 함수 참조

빈 공간 정리

자르기는 선택의 시작 또는 끝에서 쓰기 공간을 제거하는 데 사용됩니다.

MSSQL에는 단일 TRIM()

SELECT LTRIM('  Hello  ') --returns 'Hello  '
SELECT RTRIM('  Hello  ') --returns '  Hello'
SELECT LTRIM(RTRIM('  Hello  ')) --returns 'Hello'

MySQL과 Oracle

SELECT TRIM('  Hello  ') --returns 'Hello'

사슬 같이 잇다

(표준 ANSI / ISO) SQL에서 문자열 연결 연산자는 || . 이 구문은 SQL Server를 제외한 모든 주요 데이터베이스에서 지원됩니다.

SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!

많은 데이터베이스는 문자열 조인을위한 CONCAT 함수를 지원합니다 :

SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'

일부 데이터베이스는 CONCAT 을 사용하여 두 개 이상의 문자열을 조인하는 것을 지원합니다 (Oracle은 그렇지 않습니다).

SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'

일부 데이터베이스에서는 문자열이 아닌 형식을 변환하거나 변환해야합니다.

SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'

일부 데이터베이스 (예 : Oracle)는 암시적인 무손실 변환을 수행합니다. 예를 들어, CONCAT A의 CLOBNCLOB 산출 NCLOB . 숫자와 varchar2 에 대한 CONCATvarchar2 등을 생성합니다.

SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar

일부 데이터베이스는 비표준 + 연산자를 사용할 수 있습니다 (하지만 대부분의 경우 + 는 숫자에만 사용할 수 있습니다).

SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';

CONCAT 이 지원되지 않는 SQL Server 2012에서 + 는 문자열을 조인 할 수있는 유일한 방법입니다.

대소 문자

SELECT UPPER('HelloWorld') --returns 'HELLOWORLD'
SELECT LOWER('HelloWorld') --returns 'helloworld'

하위 문자열

구문은 다음과 같습니다. SUBSTRING ( string_expression, start, length ) . SQL 문자열은 1 색인으로 만들어집니다.

SELECT SUBSTRING('Hello', 1, 2) --returns 'He'
SELECT SUBSTRING('Hello', 3, 3) --returns 'llo'

이것은 종종 LEN() 함수와 함께 사용되어 알려지지 않은 길이의 문자열의 마지막 n 문자를 가져옵니다.

DECLARE @str1 VARCHAR(10) = 'Hello', @str2 VARCHAR(10) = 'FooBarBaz';
SELECT SUBSTRING(@str1, LEN(@str1) - 2, 3) --returns 'llo'
SELECT SUBSTRING(@str2, LEN(@str2) - 2, 3) --returns 'Baz'

스플릿

문자 분리 기호를 사용하여 문자열 표현식을 분할합니다. STRING_SPLIT() 은 테이블 반환 함수입니다.

SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');

결과:

value
-----
Lorem
ipsum
dolor
sit
amet.

물건

문자열을 다른 문자열에 넣고 특정 위치에서 0 개 이상의 문자를 대체합니다.

참고 : start 위치는 1- 색인입니다 (0이 아닌 1에서 색인을 시작합니다).

통사론:

STUFF ( character_expression , start , length , replaceWith_expression )  

예:

SELECT STUFF('FooBarBaz', 4, 3, 'Hello') --returns 'FooHelloBaz'

길이

SQL 서버


LEN은 뒤 공백을 계산하지 않습니다.

SELECT LEN('Hello') -- returns 5

SELECT LEN('Hello '); -- returns 5

DATALENGTH는 뒤 공백을 계산합니다.

SELECT DATALENGTH('Hello') -- returns 5

SELECT DATALENGTH('Hello '); -- returns 6

그러나 DATALENGTH는 문자열을 저장하는 데 사용되는 charset에 따라 달라지는 문자열의 기본 바이트 표현 길이를 반환한다는 점에 유의해야합니다.

DECLARE @str varchar(100) = 'Hello ' --varchar is usually an ASCII string, occupying 1 byte per char
SELECT DATALENGTH(@str) -- returns 6

DECLARE @nstr nvarchar(100) = 'Hello ' --nvarchar is a unicode string, occupying 2 bytes per char
SELECT DATALENGTH(@nstr) -- returns 12

신탁


구문 : Length (char)

예 :

SELECT Length('Bible') FROM dual; --Returns 5
SELECT Length('righteousness') FROM dual; --Returns 13
SELECT Length(NULL) FROM dual; --Returns NULL

참조 : LengthB, LengthC, Length2, Length4

바꾸다

통사론:

REPLACE( 문자열 검색으로 , 검색하고 대체 할 문자열을 , 원래의 문자열로 배치 할 문자열 )

예:

SELECT REPLACE( 'Peter Steve Tom', 'Steve', 'Billy' ) --Return Values: Peter Billy Tom

왼쪽 오른쪽

구문은 다음과 같습니다.
LEFT (문자열 식, 정수)
RIGHT (문자열 식, 정수)

SELECT LEFT('Hello',2)  --return He  
SELECT RIGHT('Hello',2) --return lo

Oracle SQL에는 LEFT 및 RIGHT 기능이 없습니다. SUBSTR 및 LENGTH로 에뮬레이트 될 수 있습니다.
SUBSTR (문자열 표현식, 1, 정수)
SUBSTR (string-expression, length (string-expression) -integer + 1, integer)

SELECT SUBSTR('Hello',1,2)  --return He  
SELECT SUBSTR('Hello',LENGTH('Hello')-2+1,2) --return lo

구문은 REVERSE (string-expression)입니다.

SELECT REVERSE('Hello') --returns olleH

뒤로 젖히다

REPLICATE 함수는 문자열을 지정된 횟수만큼 연결합니다.

구문은 다음과 같습니다. REPLICATE (string-expression, integer)

SELECT REPLICATE ('Hello',4) --returns 'HelloHelloHelloHello'

REGEXP

MySQL 3.19

문자열이 정규 표현식 (다른 문자열에 의해 정의 됨)과 일치하는지 확인합니다.

SELECT 'bedded' REGEXP '[a-f]' -- returns True

SELECT 'beam' REGEXP '[a-f]' -- returns False

SQL에서 함수 바꾸기 쿼리 선택 및 업데이트

SQL의 바꾸기 기능은 문자열의 내용을 업데이트하는 데 사용됩니다. 함수 호출은 MySQL, Oracle 및 SQL Server에 대해 REPLACE ()입니다.

Replace 함수의 구문은 다음과 같습니다.

REPLACE (str, find, repl)

다음 예제는 South 항목을 Employees 테이블의 Southern 항목으로 바꿉니다.

이름 주소
제임스 사우스 뉴욕
남자 사우스 보스턴
남자 이름 사우스 샌디에고

명세서 선택 :

다음 Replace 함수를 적용하면 :

SELECT 
    FirstName, 
    REPLACE (Address, 'South', 'Southern') Address
FROM Employees 
ORDER BY FirstName 

결과:

이름 주소
제임스 남부 뉴욕
남자 남부 보스턴
남자 이름 남부 샌디에고

업데이트 선언문 :

다음과 같은 접근 방식을 통해 테이블에서 영구적 인 변경을 수행하기 위해 바꾸기 기능을 사용할 수 있습니다.

Update Employees 
Set city = (Address, 'South', 'Southern');

좀 더 일반적인 방법은 WHERE 절과 함께 다음과 같이 사용하는 것입니다.

Update Employees 
Set Address = (Address, 'South', 'Southern')
Where Address LIKE 'South%';

파서 네임

데이터베이스 : SQL Server

PARSENAME 함수는 주어진 문자열 (객체 이름)의 특정 부분을 반환합니다. 객체 이름은 객체 이름, 소유자 이름, 데이터베이스 이름 및 서버 이름과 같은 문자열을 포함 할 수 있습니다.

추가 정보 MSDN : PARSENAME

통사론

PARSENAME('NameOfStringToParse',PartIndex)

개체 이름을 얻으려면 부분 색인 1

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',1)  // returns `ObjectName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',1)     // returns `Student`

스키마 이름을 얻으려면 파트 색인 2

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',2)  // returns `SchemaName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',2)     // returns `school`

데이터베이스 이름을 얻으려면 파트 인덱스 3

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',3) // returns `DatabaseName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',3)    // returns `SchoolDatabase` 

서버 이름을 얻으려면 부분 색인 4

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',4)  // returns `ServerName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',4)     // returns `[1012-1111]`

PARSENAME가 돌려 주어집니다 null는 지정되고 지정된 객체 명 문자열에는 부분이 존재하지 않습니다

INSTR

substring의 최초의 출현의 인덱스를 돌려줍니다 (발견되지 않았던 경우는 0).

구문 : INSTR (문자열, 하위 문자열)

SELECT INSTR('FooBarBar', 'Bar') -- return 4
SELECT INSTR('FooBarBar', 'Xar') -- return 0


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow