SQL 如何使用LIKE

SQL 如何使用LIKE

在本文中,我们将学习如何在SQL数据库的表中使用LIKE来匹配列中的特定模式。

什么是LIKE?

LIKE是一种SQL运算符,用于在字段的每一行中搜索特定的模式。这个运算符总是与SQL语句中的WHERE子句一起使用。

结构化查询语言中使用Like运算符的语法:

SELECT Column_Name_1, Column_Name_2, Column_Name_3, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE Pattern;

在结构化查询语言(SQL)中,LIKE运算符与以下两个通配符一起使用:

  1. 百分号(%)
  2. 下划线(_)

百分号(%)

百分号是一种通配符字符,用于比较任何包含零个、一个或多个字符的字符串。

使用LIKE运算符与百分号的语法:

1. 以下语法匹配以字符“M”开头的所有字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE 'M%' ;

2. 下面的语法匹配所有以字符 ‘M’ 结尾的字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE 'M%' ;

3. 下面的语法匹配包含字符 ‘M’ 在任何位置的所有字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE '%M%' ;

4.以下语法匹配所有以字符’M’开头和以字符’T’结尾的字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE 'M%T' ;

下划线 (_)

在SQL中,该通配符字符与单个字符的任何字符串进行比较。

使用LIKE运算符的下划线符号的语法:

1. 以下语法匹配所有只包含两个字符的字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE 'M_' ;

2.以下语法匹配所有在第二个位置包含字符’m’的字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE '_m%' ;

3. 以下语法适用于所有至少包含5个字符并以字符“M”开头的字符串:

SELECT Column_Name_1, Column_Name_2, ......, Column_Name_N FROM Table_Name WHERE Column_Name LIKE 'M_____%' ;

如果您想将SQL的LIKE运算符添加到表中的列中,您需要按照以下步骤进行:

  1. 在系统中创建一个数据库。
  2. 在数据库中创建表并将数据插入数据库。
  3. 查看插入的数据。
  4. 在表的列上使用LIKE运算符。

现在,我们将用一个示例来解释上述步骤:

步骤1:创建一个数据库

在结构化查询语言中,创建数据库是将结构化表存储在数据库中的第一步。

使用以下SQL语法创建数据库:

CREATE DATABASE Database_Name;

假设您想创建一个 大学 数据库。为此,您需要在结构化查询语言中输入以下命令:

CREATE DATABASECollege;

步骤2:创建表格并插入数据

现在,请使用以下的SQL语法在您的数据库中创建表格:

CREATE TABLE table_name  
(
column_Name_1 data type (size of the column_1),  
column_Name_2 data type (size of the column_2),  
column_Name_3 data type (size of the column_3),  
...  
column_Name_N data type (size of the column_1)
);  

假设您想在 College 数据库中创建包含五列的 Student 表。为此,您必须在您的应用程序中编写以下查询:

CREATE TABLE Student 
(
Roll_No Int,  
First_Name VARCHAR (20),  
City VARCHAR (20),  
Age Int,
Percentage Int,
Grade VARCHAR (10) 
) ;

现在,您必须使用以下语法将数据插入表中:

INSERT INTO <Table_Name> VALUES (value_1, value_2, value_3, ...., value_N);  

使用以下查询将多个学生的记录插入到 Student 表中的 College 数据库中:

INSERT INTO Student VALUES (101, Akash, Delhi, 18, 89, A2), 
(102, Bhavesh, Kanpur, 19, 93, A1),
(103, Yash, Delhi, 20, 89, A2),  
(104, Bhavna, Delhi, 19, 78, B1),
(105, Yatin, Lucknow, 20, 75, B1),
(106, Ishika, Ghaziabad, 19, 51, C1),
(107, Vivek, Goa, 20, 62, B2);

步骤3:查看插入的数据

在创建表格和插入数据之后,你可以通过在SQL应用程序中输入以下查询语句来查看插入的 学生 表的记录:

SELECT * FROM Student;
Roll_No First_Name City Age Percentage Grade
101 Akash Delhi 18 89 A2
102 Bhavesh Kanpur 19 93 A1
103 Yash Delhi 20 89 A2
104 Bhavna Delhi 19 78 B1
105 Yatin Lucknow 20 75 B1
106 Ishika Ghaziabad 19 91 C1
107 Vivek Goa 20 80 B2

步骤4:使用Like运算符在表中列出记录

以下查询显示了Student表中名字以 ‘B’ 字母开头的学生的记录:

SELECT Roll_No, First_Name, Percentage, Grade FROM Student WHERE First_Name LIKE 'B%' ;

以上查询的输出结果:

Roll_No First_Name Percentage Grade
102 Bhavesh 93 A1
104 Bhavna 78 B1

如上输出所示,该表只包含了Bhavesh和Bhavna的记录,因为他们的名字以B字母开头。

以下查询显示了从Student表中First_Name以 ‘h’ 字母结尾的学生的记录:

SELECT Roll_No, First_Name, Percentage, Grade FROM Student WHERE First_Name LIKE '%h' ;

上述查询的输出结果:

Roll_No First_Name Percentage Grade
101 Akash 89 A2
102 Bhavesh 93 A1
103 Yash 89 A2

正如上面的输出所示,这个表只包含了Akash、Bhavesh和Yash学生的记录,因为他们的名字以字母h结尾。

以下查询显示了给定学生表中那些First_Name中包含字符 ‘a’ 的学生的记录:

SELECT Roll_No, First_Name, Percentage, Grade FROM Student WHERE First_Name LIKE '%a%' ;

以上查询的输出:

Roll_No First_Name City Age Percentage Grade
101 Akash Delhi 18 89 A2
102 Bhavesh Kanpur 19 93 A1
103 Yash Delhi 20 89 A2
104 Bhavna Delhi 19 78 B1
105 Yatin Lucknow 20 75 B1
106 Ishika Ghaziabad 19 91 C1

如SQL输出所示,该表中包含除了 Vivek 学生的所有学生记录,因为 Vivek 的名字在任何位置都不包含字母 ‘a’

以下查询显示了来自Student表的那些城市名以 ‘D’ 字母开头并以 ‘I’ 字母结尾的学生记录:

SELECT Roll_No, First_Name, City, Percentage FROM Student WHERE City LIKE 'D%i' ;

以上查询的输出结果:

Roll_No First_Name City Percentage
101 Akash Delhi 89
103 Yash Delhi 89
104 Bhavna Delhi 78

如上所示的SQL输出,该表仅包含城市为德里的学生的记录。

以下查询显示了学生表中百分比以数字’7’开头的学生的记录:

SELECT Roll_No, First_Name, City, Percentage, Grade FROM Student WHERE Percentage LIKE '7_' ;

上述查询的输出结果:

Roll_No First_Name City Age Percentage Grade
104 Bhavna Delhi 19 78 B1
105 Yatin Lucknow 20 75 B1

如上所示的SQL输出,该表仅包含成绩为78和75的学生的记录。

下面的查询显示了Student表中名字中第三个位置包含 ‘a’ 的学生的记录:

SELECT Roll_No, First_Name, City, Percentage, Grade FROM Student WHERE First_Name LIKE '__a%' ;

上述查询的输出:

Roll_No First_Name City Percentage Grade
101 Akash Delhi 89 A2
102 Bhavesh Kanpur 93 A1
104 Bhavna Delhi 78 B1

正如上面的输出所示,表格只包含那些在 First_Name 的第三个位置包含字符 ‘a’ 的学生的记录。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程