SQL - CHARINDEX() 函式



SQL CHARINDEX() 函式從指定位置開始搜尋字串中的子字串,並返回找到的子字串的位置。如果未找到子字串,則此函式返回 0。它接受三個引數,子字串、字串(要搜尋的字串)、起始位置(這是一個可選引數)搜尋將開始的位置。

我們搜尋的子字串不應超過 8000 個字元。SQL 提供各種字串型別,即 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET。使用 SQL 中的字串函式,我們可以操作字串值。

語法

以下是 SQL CHARINDEX() 函式的語法:

CHARINDEX(substring, string, start)

引數

這裡,CHARINDEX() 函式接受三個引數:

  • substring - 要搜尋的子字串,它最多包含 8000 個字元。

  • string - 要搜尋的字串。

  • start - 這是一個可選引數。搜尋將開始的位置(如果您不想從字串的開頭開始)。字串中的第一個位置是 1。

返回值

此函式返回給定字串中子字串的位置,如果在字串中未找到子字串,則函式返回 0。

示例

以下是一個使用 CHARINDEX() 函式搜尋字元的示例。

SELECT CHARINDEX('s', 'Tutorialspoint') As charindex;

輸出

執行上述語句後,將產生以下輸出:

+-----------+
| charindex |
+-----------+
|     9     |
+-----------+

示例

以下是一個使用 CHARINDEX() 函式搜尋子字串的示例。

SELECT CHARINDEX('educate', 'Tutorialspoint is an online educate company') 
As charindex ;

輸出

執行上述語句後,將產生以下輸出:

+-----------+
| charindex |
+-----------+
|    29     |
+-----------+

示例

以下是一個搜尋子字串的示例,其中它與給定字串不匹配。

SELECT CHARINDEX('learning', 'Tutorialspoint is an online educate company') 
As charindex ;

輸出

執行上述語句後,將產生以下輸出:

+-----------+
| charindex |
+-----------+
|    0      |
+-----------+

示例

以下是一個將starting_position作為引數傳遞給 CHARINDEX() 函式的示例。

SELECT CHARINDEX('educate', 'Tutorialspoint is an online educate company', 14) 
As charindex ;

輸出

執行上述語句後,將產生以下輸出:

+-----------+
| charindex |
+-----------+
|    29     |
+-----------+

示例

您可以將表列作為引數傳遞給CHARINDEX()函式以搜尋特定列中的字元。假設我們使用CREATE語句建立了一個名為 Customers 的表,如下所示:

create table CUSTOMERS(
   ID INT NOT NULL, 
   NAME VARCHAR(15) NOT NULL, 
   AGE INT NOT NULL, 
   ADDRESS CHAR(25), 
   SALARY DECIMAL(10, 4), PRIMARY KEY(ID)
);

現在讓我們使用 INSERT 語句將條記錄插入到 Customers 表中,如下所示:

insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(6, 'Komal', 22, 'MP', 4500.00);
insert INTO CUSTOMERS(ID, NAME, AGE, ADDRESS, SALARY) VALUES(7, 'Muffy', 24, 'Indore', 10000.00);

以下 SELECT 查詢使用 CHARINDEX() 函式在 CUSTOMERS 表的 NAME 列中搜索字元“a”。

SELECT NAME, CHARINDEX('a', NAME) AS CHAR_INDEX FROM CUSTOMERS;  

輸出

以下是上述查詢的輸出:

+---------+---------------+
|   NAME  |  CHAR_INDEX   |
+---------+---------------+               
|  Ramesh |      2        |
|  Khilan |      5        |
|  kaushik|      2        |
| Chaitali|      3        |
|  Hardik |      2        |
|  Komal  |      4        |
|  Muffy  |      0        |
+---------+---------------+
sql-string-functions.htm
廣告