mysql substring substring_index functions with examples
여러 예제를 통해 MySQL SUBSTRING 및 SUBSTRING_INDEX 함수와 사용법에 대해 알아 봅니다.
MySQL Substring 함수는 입력 문자열에 대해 부분 문자열 또는 부분 문자열을 추출하는 데 사용됩니다. 이름에서 알 수 있듯이 Substring 함수는 문자열 입력에 대해 작동하고 지정된 옵션에 대해 더 작은 하위 문자열을 반환합니다.
또한 SUBSTRING_INDEX라는 SUBSTRING의 다른 변형에 대해서도 알아 봅니다. 이 함수는 문자 또는 문자열 값을 구분 기호로 받아들이고 지정된 구분 기호 값에 대해 검색을 실행합니다.
또한 SELECT 쿼리의 일부로 데이터를 쿼리하는 동안 이러한 함수를 사용하는 방법을 이해하기 위해 몇 가지 예를 살펴 보겠습니다.
학습 내용 :
MySQL SUBSTRING
통사론:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
SUBSTRING 함수를 사용할 수있는 방법에는 두 가지가 있습니다.
예제로 들어가기 전에 구문을 이해합시다.
- {문자열 값} : 실제 문자열 값 또는 작업 할 문자열이 포함 된 열 이름입니다.
- {start_index} : start_index는 하위 문자열이 시작되는 왼쪽 또는 오른쪽의 인덱스입니다. 값은 각각 왼쪽에서 문자열을 추출할지 오른쪽에서 추출할지에 따라 양수 또는 음수 일 수 있습니다. 이것은 예제를 통해 더 명확해질 것입니다.
- {카운트}: 이 필드는 선택 사항이며 다음에서 문자 수를 지정합니다. start_index 하위 문자열을 추출해야하는 필드입니다. 언급되지 않은 경우 일치하는 부분에서 시작하는 전체 문자열 start_index 반환됩니다.
format2는 키워드 FROM 및 FOR를 사용하여 더 쉽게 읽을 수 있다는 점을 제외하면 format1의 변형입니다. 따라서 여기에서 FROM은 start_index 값을 언급하기 전에 FOR가 사용됩니다. 카운트 .
MySQL SUBSTRING 함수를 이해하기위한 몇 가지 예를 살펴 보겠습니다.
문자열 입력 값을 소프트웨어 테스팅 도움말
문자열 인덱스는 아래 표와 같습니다.
1 | 두 | 삼 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 열한 | 12 | 13 | 14 | 열 다섯 | 16 | 17 | 18 | 19 | 이십 | 이십 일 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
에스 | 또는 | 에프 | 티 | 에 | ...에 | 아르 자형 | 이다 | 티 | 이다 | 에스 | 티 | 나는 | 엔 | 지 | H | 이다 | 엘 | 피 |
MySQL SUBSTRING 예
카운트없이
위의 문자열에서 도움말 텍스트를 추출한다고 가정합니다. H의 인덱스는 18입니다.
아래 쿼리를 보겠습니다.
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
여기에서 중요한 것은 카운트, 그러나 우리는 여전히 올바른 문자열을 얻고 있습니다. 이것은 카운트가 생략되면 주어진 인덱스에서 시작하는 전체 문자열이 반환되기 때문입니다.
이 경우 시작 인덱스를 언급하면 예를 들면 'T'(색인 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
위에서 볼 수 있듯이 출력에는 'Testing Help'전체 텍스트가 포함됩니다.
카운트로
이제 반환 할 문자 수를 언급 할 예를 살펴 보겠습니다.
문자열 'Software Testing Help'에서 'Testing'단어를 추출한다고 가정합니다. 그런 다음 count를 – 7 ( 'Testing'이라는 단어의 길이)으로 언급 할 수 있습니다.
아래 쿼리를 보겠습니다.
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
여기에서는 필요한 결과를 얻기 위해 쿼리의 일부로 시작 인덱스와 문자 수를 모두 설명했습니다.
음수 인덱스 값
지금까지 우리가 본 예제에 대해 start_index 양수 값으로.
start_index를 음수로 지정할 수도 있습니다. 이는 단순히 왼쪽에서 계산하는 대신 MySQL 엔진이 문자열의 끝에서 시작 인덱스를 계산한다는 것을 의미합니다.
예를 보자
문자열 '소프트웨어 테스트 도움말'의 경우 올바른 색인을 식별하기 위해 아래에 행을 추가하겠습니다.
엘 | 1 | 두 | 삼 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 열한 | 12 | 13 | 14 | 열 다섯 | 16 | 17 | 18 | 19 | 이십 | 이십 일 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
에스 | 또는 | 에프 | 티 | 에 | ...에 | 아르 자형 | 이다 | 티 | 이다 | 에스 | 티 | 나는 | 엔 | 지 | H | 이다 | 엘 | 피 | |||
아르 자형 | 이십 일 | 이십 | 19 | 18 | 17 | 16 | 열 다섯 | 14 | 13 | 12 | 열한 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 삼 | 두 | 1 |
따라서 여기 하단 행은 올바른 인덱스를 나타냅니다. 이제 올바른 인덱스가있는 MySQL SUBSTRING 함수를 사용하여 'Testing'이라는 단어를 추출한다고 가정합니다.
테스팅에서‘T’의 오른쪽 인덱스는 12 (왼쪽 인덱스는 10)입니다.
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
위의 예에서 볼 수 있듯이 올바른 인덱스를 음수 값으로 언급하면 동일한 결과를 얻을 수 있습니다.
범위를 벗어난 인덱스
이제 몇 가지 부정적인 시나리오를 시도하십시오.
- 지정된 start_index가 존재하지 않는 경우 : 즉, 지정된 인덱스가 범위를 벗어난 경우 출력이 비어 있습니다.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- 지정된 개수가 음수이거나 문자열의 총 길이보다 길면 출력은 문자열의 나머지 부분 일뿐입니다 (지정된 start_index 시작).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
위에서 볼 수 있습니다. 여기서 카운트는 100으로 언급되었지만 문자열은 21 자입니다.
- 개수가 음수로 언급 된 시나리오를 하나 더 시도해 보겠습니다.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
여기에도 오류가 없으며 출력이 될 빈 문자열 만있을 것입니다.
MySQL SUBSTRING_INDEX
이것은 MySQL SUBSTRING 함수의 또 다른 변형입니다.
여기서는 start_index의 실제 값을 언급하는 대신 단순히 문자와 색인 및 출력을 반환하기 전에 구분 기호를 검색해야하는 횟수를 언급 할 수 있습니다.
여기서 주목해야 할 중요한 점은 SUBSTRING_INDEX
MySQL SUBSTRING INDEX 함수 :
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column} : SELECT 쿼리의 실제 문자열 입력 또는 열 이름입니다.
- 구분자 : 나머지 문자열을 출력으로 추출하기 위해 찾아야하는 문자 또는 하위 문자열입니다. 이 값은 대소 문자를 구분하므로 실제 문자열에 나타나는대로 지정해야합니다.
- 엔: 구분 기호 수 – 즉, 문자열을 반환하기 전에 구분 기호를 검색 할 횟수입니다.
몇 가지 예를 들어 이해해 보겠습니다.
아래의 다음 섹션에서 논의 할 모든 예제에 대해 입력 문자열과 동일한 문자열 'Software Testing Help'를 사용합니다.
캐릭터 검색
문자‘T’를 검색하는 동안 출력은‘소프트웨어’가됩니다. 소프트웨어라는 단어 뒤의 추가 공백도 포함됩니다.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
두 번 이상 나타나는 문자를 검색합니다. 여기는 –‘e’
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
이 예에서 : 카운트를 1로 지정 했으므로 출력은 'e'의 첫 번째 발생에 도달 할 때까지 문자열이됩니다.
동일한 문자 'e'에 대해 개수를 2로 변경합니다.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
이제 두 번째 문자 'e'가 반환 될 때까지 하위 문자열이 반환되는 것을 볼 수 있습니다.
다른 예를 들어서 SUBSTRING INDEX가 대소 문자를 구분한다는 것을 이해하십시오. ‘T’대신‘t’를 사용해 봅시다
Windows 10에서 BIOS를 업데이트하는 방법
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
문자열 검색
문자 대신 문자열을 검색하기 위해 SUBSTRING INDEX 함수를 사용할 수 있습니다. ‘Testing’이라는 단어를 검색해 보겠습니다.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
존재하지 않는 문자열 검색
존재하지 않는 문자열에 SUBSTRING INDEX를 사용합니다.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
여기서 출력은 약간 예상치 못한 것일 수 있습니다. 그러나 MySQL 엔진은 필요한 일치 항목을 찾을 수 없기 때문에 전체 문자열을 출력으로 반환합니다.
역순으로 문자 또는 문자열 검색
SUBSTRING 함수와 유사하게 SUBSTRING INDEX 함수를 사용하면 카운트를 음수로 언급 할 수도 있습니다. 즉, MySQL 엔진은 왼쪽에서 오른쪽으로 이동하는 대신 오른쪽에서 왼쪽으로 일치하는 항목을 찾으려고합니다.
몇 가지 예를 통해이를 이해하십시오.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
위의 예에서 구분 기호는‘T’이고 개수는 -1입니다. 따라서 출력은 문자‘T’에 대한 첫 번째 일치 항목을 얻을 때까지 오른쪽부터 하위 문자열이됩니다.
MySQL SUBSTRING 함수의 응용
일반적으로 하나 또는 여러 테이블에서 데이터를 쿼리 할 때 MySQL 문자열 함수를 사용합니다. 열의 값을 분할하거나 필요에 따라 필수 값을 표시하는 데 사용할 수 있습니다.
예: ID, 이름 및 주소로 구성된 직원 세부 정보 테이블이 있다고 가정합니다.
주소 열은 형식입니다. {HouseNo}, {StreetName}
다음은 테이블을 만들고 더미 데이터를 삽입하는 스크립트입니다.
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32);
MySQL SUBSTRING 함수를 사용하여 집 번호 아래와 같이 주소 열에서 추출됩니다.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
산출:
이름 | house_no | 주소 | 나이 |
---|---|---|---|
아카시 말호 트라 | 22 | 22, 디펜스 콜로니 | 24 |
스티브 윌슨 | 12/4 | 12/4, 윌슨 스트리트 | 28 |
모니카 싱 | 190 | 190, 스미스 레인 | 32 |
위의 쿼리에서 주소 열에서 House-Number를 얻기 위해 SUBSTRING_INDEX 함수를 사용했으며 구분 기호로‘,’를 사용했음을 알 수 있습니다.
이와 유사하게, 더 큰 문자열 입력 또는 열 값에서 의미있는 정보를 가져 오기 위해 문자열을 추출하려는 많은 애플리케이션이있을 수 있습니다.
자주 묻는 질문
Q # 1) 문자열에서 SUBSTRING이 처음 나타나는 위치를 반환하는 MySQL 함수는 무엇입니까?
대답: MySQL은 주어진 문자열 또는 열 값에서 SUBSTRING을 반환하거나 추출하는 두 가지 함수를 제공합니다.
- SUBSTRING
예:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- SUBSTRING INDEX
예:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Q # 2) MySQL에서 SUBSTRING_INDEX는 무엇입니까?
대답: SUBSTRING_INDEX 함수는 SUBSTRING 함수의 변형입니다. 일반 SUBSTRING 함수에서는 색인을 입력 문자열의 숫자로 언급해야하지만 SUBSTRING_INDEX 함수의 경우 검색 할 문자 또는 더 작은 하위 문자열을 언급 할 수 있습니다.
추천 읽기 = >> MySQL COUNT 자습서
결론
이 자습서에서는 MySQL SUBSTRING 및 SUBSTRING_INDEX 함수에 대해 배웠습니다. 두 함수 모두 주어진 입력 문자열에 대해 하위 문자열을 추출하지만 약간 다른 방식으로 작동합니다.
SUBSTRING은 인덱스를 실제 숫자로 예상하는 반면 SUBSTRING_INDEX는 문자 또는 문자열 값으로 지정된 구분 기호를 가질 수 있으며 MySQL 엔진은 필요한 일치하는 문자열 또는 문자에 대해 추출 할 수 있습니다.
이 두 함수는 모두 적절한 요구 사항에 따라 문자열 추출 논리를 사용하여 여러 정보가있는 열을 하위 열로 추출 할 수있는 경우 주로 사용됩니다.