40,SQL训练之,力扣,1527. 患某种疾病的患者

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用

目录

一,原题力扣链接

二,题干

三,建表语句

四,分析

思路一:like模糊查询

思路二, 正则匹配

五,SQL解答

解法一,like模糊查询解法

 解法二,正则匹配解法

六,验证

七,知识点总结


一,原题力扣链接

. - 力扣(LeetCode)

二,题干

患者信息表: Patients

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| patient_id   | int     |
| patient_name | varchar |
| conditions   | varchar |
+--------------+---------+
在 SQL 中,patient_id (患者 ID)是该表的主键。
'conditions' (疾病)包含 0 个或以上的疾病代码,以空格分隔。
这个表包含医院中患者的信息。

查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。

按 任意顺序 返回结果表。

查询结果格式如下示例所示。

示例 1:

输入:
Patients表:
+------------+--------------+--------------+
| patient_id | patient_name | conditions   |
+------------+--------------+--------------+
| 1          | Daniel       | YFEV COUGH   |
| 2          | Alice        |              |
| 3          | Bob          | DIAB100 MYOP |
| 4          | George       | ACNE DIAB100 |
| 5          | Alain        | DIAB201      |
+------------+--------------+--------------+
输出:
+------------+--------------+--------------+
| patient_id | patient_name | conditions   |
+------------+--------------+--------------+
| 3          | Bob          | DIAB100 MYOP |
| 4          | George       | ACNE DIAB100 | 
+------------+--------------+--------------+
解释:Bob 和 George 都患有代码以 DIAB1 开头的疾病。

三,建表语句

Create table If Not Exists Patients (patient_id int, patient_name varchar(30), conditions varchar(100))
Truncate table Patients
insert into Patients (patient_id, patient_name, conditions) values ('1', 'Daniel', 'YFEV COUGH')
insert into Patients (patient_id, patient_name, conditions) values ('2', 'Alice', '')
insert into Patients (patient_id, patient_name, conditions) values ('3', 'Bob', 'DIAB100 MYOP')
insert into Patients (patient_id, patient_name, conditions) values ('4', 'George', 'ACNE DIAB100')
insert into Patients (patient_id, patient_name, conditions) values ('5', 'Alain', 'DIAB201')

四,分析

题解:

表:病人表

字段:病人id,病人名称,疾病详情;

要求:查询患有DIABI的患者信息。DIABI可能出现在开头,也可能出现在中间,但是他始终是以单词开头出现。

思路一:like模糊查询

模糊查询可解,

如果DIABI在开头,就%DIABI%

如果DIABI在中间,他有个特征就是有个空格  所以就可以% DIABI% 

思路二, 正则匹配

\b 正则表达式中的\b表示单词边界。‌

转义一下 \\b

匹配关键字

最后.是一个通配符,匹配的是除换行符之外的任何单个字符;

最后一个*   用来匹配后面的单词

所以完整的正则就是:

\\bDIAB1.*'

五,SQL解答

解法一,like模糊查询解法

select * from Patients where conditions like 'DIAB1%' or conditions like '% DIAB1%';

 解法二,正则匹配解法

select * from Patients where  conditions regexp '\\bDIAB1.*';

六,验证

七,知识点总结

模糊查询练习

正则查询练习

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值