Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL의 주어진 문자열에서 마지막 부분 문자열의 인덱스를 얻으시겠습니까?

<시간/>

주어진 문자열에서 마지막 부분 문자열의 인덱스를 얻으려면 char_length() 함수를 사용하십시오. 먼저 문자열 길이를 계산하고 전체 길이에서 마지막 하위 문자열 길이를 빼야 합니다. 길이의 차이는 부분 문자열의 인덱스입니다.

구문

구문은 다음과 같습니다 -

select CHAR_LENGTH(yourColumnName) - LOCATE('yourDelimiter ',
REVERSE(yourColumnName))+1 as anyVariableName
from yourTableName;

위의 구문을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table SubStringIndexDemo
   -> (
   -> Words varchar(200)
   -> );
Query OK, 0 rows affected (0.57 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into SubStringIndexDemo values('This is MySQL Query');
Query OK, 1 row affected (0.13 sec)

mysql> insert into SubStringIndexDemo values('MySQL is a Relational Database');
Query OK, 1 row affected (0.34 sec)

mysql> insert into SubStringIndexDemo values('Java is a programming language');
Query OK, 1 row affected (0.11 sec)

mysql> insert into SubStringIndexDemo values('Spring is a Framework');
Query OK, 1 row affected (0.20 sec)

select 명령을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from SubStringIndexDemo;

출력

+--------------------------------+
| Words                          |
+--------------------------------+
| This is MySQL Query            |
| MySQL is a Relational Database |
| Java is a programming language |
| Spring is a Framework          |
+--------------------------------+
4 rows in set (0.00 sec)

다음은 마지막 부분 문자열의 인덱스를 가져오는 데 사용할 수 있는 쿼리입니다::

mysql> select CHAR_LENGTH(Words) - LOCATE(' ', REVERSE(Words))+1 as
PositionOfLastSubstring
   -> from SubStringIndexDemo;

출력

+-------------------------+
| PositionOfLastSubstring |
+-------------------------+
|                      14 |
|                      22 |
|                      22 |
|                      12 |
+-------------------------+
4 rows in set (0.00 sec)