迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

在 MySQL 中搜索行以查找子字符串

作者:迹忆客 最近更新:2024/03/25 浏览次数:

在某些情况下,你必须在表中搜索字符串或子字符串。

例如,你想知道 employee 表中有多少 Gmail 用户。另一个例子是在 employee 表中查找所有以 Je 开头的 firstname

在这里,搜索一个字符串或子字符串就出现在图片中,并且有不同的搜索方式。POSITION() 用于标准 SQL,LOCATE()% 通配符用于 MySQL,INSTR() 用于 Oracle。

我们将学习 MySQL 支持的方法,并观察哪种方法是在 MySQL 中搜索行以查找子字符串的最佳且简单的方法。你可以查看所有这些方法,然后决定哪种方法最适合你的情况。


方法 1:使用 % 通配符查找字符串/子字符串

% 通配符用于替换字符串中的一个或多个字符。此通配符与 LIKE 运算符一起使用,LIKE 运算符用于 WHERE 子句。

为了练习,我们创建了一个名为 employee 的新表。你可以使用下面给出的示例代码创建它并用数据填充它。

这样,我们在学习的同时就会步调一致。

#Create employee table
CREATE TABLE employee(
id int not null primary key,
firstname varchar(60) not null,
lastname varchar(60) not null,
gender varchar(30) not null,
city varchar(40) not null,
email varchar(60) not null
);

#Insert data into employee table.
INSERT INTO employee VALUES 
    (1,'James','Robert','Male','London','jrober@gmail.com'),
    (2,'Mary','Patricia','Female','Berlin','patricia@gmail.com'),
    (3,'John','Michael','Male','Paris','johnmichael@yahoo.com'),
    (4,'Jennifer','Linda','Female','Lisbon','jennifer@hotmail.com'),
    (5,'William','David','Male','Rome','wdwilliam@gmail.com'),
    (6,'Elizabeth','Barbara','Female','Dublin','elibarbara011@yahoo.com'),
    (7,'Richard','Joseph','Male','Oslo', 'richard@gmail.com'),
    (8,'Susan','Jessica','Female','Hamburg','susan01@yahoo.com'),
    (9,'Thomas','Charles','Male','Texas', 'thomas.charles@hotmail.com'),
    (10,'Karen','Nancy','Female','Washington','karenofficial@gmail.com');

SELECT * FROM employee;

输出:

让我们了解考虑使用%通配符搜索行以查找字符串或子字符串的不同场景。

场景 1:查找所有 Gmail 用户。意思是,我们必须在 email 中找到一个子字符串。

SELECT firstname, lastname from employee where email LIKE '%@gmail.com';

上面的 SQL 查询将从 email 字符串包含 gmail.comemployee 表中选择 firstnamelastname

输出:

场景 2:选择以字母 a 结尾的姓氏。在这里,我们将找到一个字符串 lastname

SELECT lastname FROM employee WHERE lastname LIKE '%a';

输出:

场景 3:让我们找到以 L 开头,以 n 结尾的 city 名称,中间有四个字符。一个下划线(_)代表一个字符。

SELECT city FROM employee WHERE city LIKE 'L____n';

输出:

你可以在此处了解更多通配符。


方法 2:使用 LOCATE() 函数查找字符串/子字符串

LOCATE 函数返回子字符串在字符串中的第一次出现。如果无法在原始字符串中找到子字符串,则返回 0

此函数执行不区分大小写的搜索,这意味着 HELLOhelloLOCATE 函数相同。它与以下语法一起使用。

LOCATE(substring, string, start)

在上面给出的语法中,名为 substring 和 string 的前两个参数是必需的,但名为 start 的第三个参数是可选的。

你可能对输出的外观有疑问?让我们通过下图了解。

SELECT LOCATE("hotmail", email) FROM employee;

输出:


结论

我们得出结论,不同的数据库平台支持不同的方法。LOCATE(),通配符与 MySQL 兼容。

我们借助示例了解了 MySQL 支持的搜索字符串或子字符串的方法。并观察输出了解。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MySQL 中的减法运算

发布时间:2024/03/25 浏览次数:140 分类:MySQL

本教程将指导你如何在 MySQL 中模拟 MINUS 操作。它还通过不同的示例教你各种模拟 MINUS 操作的方法。

MySQL 中的安全模式

发布时间:2024/03/25 浏览次数:193 分类:MySQL

本教程帮助我们了解 MySQL 数据库中的安全模式。

MySQL 中的 MUL vs PRI vs UNI

发布时间:2024/03/25 浏览次数:190 分类:MySQL

本教程将指导你了解 MySQL 中 MUL、PRI 和 UNI 键之间的区别。它还强调了它们中的每一个的使用。

MySQL 中的 If ELSE

发布时间:2024/03/25 浏览次数:65 分类:MySQL

本教程演示如何在 MySQL 中使用 IF ELSE 语句。

在 MYSQL 中的一个查询中执行多个连接

发布时间:2024/03/25 浏览次数:161 分类:MySQL

本教程展示了如何在 MySQL 中的一个查询中合并多个连接;无论是内部的还是外部的。我们还展示了定义连接条件的不同方法。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便