SQL PATINDEX() 函数

SQL PATINDEX() 函数

PATINDEX() 函数用于检索表达式中模式的位置。它接受两个参数,表示模式和表达式,并返回指定列中给定模式第一次出现的起始位置。如果在表达式中找不到指定模式,则返回0。

使用该函数进行搜索是不区分大小写的,即不同大小写的相同字符(”a” 和 “A”)被视为一个字符。表达式中的第一个位置从1开始。

如果我们将列名作为参数传递给此函数,表达式可以是字符串或列的名称,此函数将返回每列中模式的索引(如果模式不存在,则为0)。

语法

以下是 PATINDEX() 函数的语法 –

PATINDEX('pattern', expression )

参数

  • pattern - 包含要查找的字符序列的表达式。

  • expression - 字符串或您需要查找模式索引的列的名称。

示例

以下SELECT查询显示了给定字符串中单词“Ocean”的PATINDEX。

SELECT PATINDEX( '%OCEAN%', 'PACIFIC OCEAN') AS PATINDEX_OCEAN;

输出

以下是上述查询的输出结果 –

+----------------+
| PATINDEX_OCEAN |
+----------------+
|       9        |
+----------------+

示例

以下SELECT查询返回原始字符串中字符串“Manufacturing Company”的PATINDEX。

SELECT PATINDEX( '%Educate_Company%', 'Tutorialspoint is the Online Educate Company') AS PATINDEX_Educate_Company;

输出

以下是上面查询的结果:

+-------------------------+
|PATINDEX_Educate_Company |
+-------------------------+
|         30              |
+-------------------------+

示例

以下SELECT查询显示了原始字符串中字符’T’的PATINDEX。

SELECT PATINDEX(  '%T%', 'TUTORIALSPOINT')AS PATINDEX_T;

输出

以下是上述查询的输出 –

+-----------+
|PATINDEX_T |
+-----------+
|    1      |
+-----------+

示例

以下SELECT查询显示了PATINDEX,其中我们给出的字符在原始字符串中不存在,因此返回0。

SELECT PATINDEX(  '%B%', 'TUTORIALSPOINT')AS PATINDEX_B;

输出

以下是上述查询的输出结果-

+-----------+
|PATINDEX_B |
+-----------+
|    0      |
+-----------+

示例

您可以将表列作为参数传递给 PATINDEX() 函数,将字符或字符串转换为 PATINDEX() 函数。假设我们使用以下 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查询在上述CUSTOMERS表格的Name列中使用了PATINDEX()函数。

SELECT NAME, PATINDEX('%a%', NAME) AS PATINDEX_a FROM CUSTOMERS;

输出

以下是上述查询的输出结果-

+---------+---------------+
|   NAME  |  PATINDEX_a   |
+---------+---------------+               
|  Ramesh |      2        |
|  Khilan |      5        |
|  kaushik|      2        |
| Chaitali|      3        |
|  Hardik |      2        |
|  Komal  |      4        |
|  Muffy  |      0        |
+---------+---------------+

示例

以下SELECT查询使用了上述CUSTOMERS表中的NAME、ADDRESS列,并且使用了LOWER函数。

SELECT NAME, PATINDEX('%i%', NAME) AS PATINDEX_i, ADDRESS,  PATINDEX('%a%', ADDRESS) AS PATINDEX_a  FROM CUSTOMERS;

输出

以下是上述查询的输出结果-

+---------+---------------+-----------+------------+
|   NAME  |  PATINDEX_i   | ADDRESS   | PATINDEX_a |
+---------+---------------+-----------+------------+            
|  Ramesh |      0        | Ahmedabad |    1       |
|  Khilan |      3        | Delhi     |    0       |
|  kaushik|      6        | kota      |    4       |
| Chaitali|      4        | Mumbai    |    5       |
|  Hardik |      5        | Bhopal    |    5       |
|  Komal  |      0        | MP        |    0       |
|  Muffy  |      0        | Indore    |    0       |
+---------+---------------+-----------+------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程