1527-患某种疾病的患者
患某种疾病的患者
- 题目如下所示
个人题解
这题看起来需要做 MySQL 当中的字符串分割,难度很大。但是其实只使用一个LIKE
关键字就能解决,骚操作。以下为个人思考过程
-
-- 1. 建表 CREATE TABLE 1527_Patients( patient_id INT, patient_name VARCHAR(20), conditions VARCHAR(50), PRIMARY KEY(patient_id) ); -- conditions 表示 包含 0 个或以上的疾病代码,以空格分隔 -- 2. 编写 SQL,查询患有 I 类糖尿病的患者 ID ,患者姓名,以及其患有的所有疾病代码。I 类糖尿病的代码总是包含前缀 DIBA1 -- 这题题干说明 conditions 字段中的值以空格作为分隔符,MySQL 中如何做分割呢? -- 目前还不了解 -- SUBSTRING_INDEX(str,delim,count) SELECT SUBSTRING_INDEX(pa.conditions,' ', LENGTH(pa.conditions) - LENGTH(REPLACE(pa.conditions,' ','')) + 1) FROM 1527_Patients pa; -- ... 不会用 -- 难道说简单用 like 就可以?总感觉不对,因为前面也有可能是 ... ADIAB100 ...,很明显这个不对啊 SELECT pa.patient_id, pa.patient_name, pa.conditions FROM 1527_Patients pa WHERE pa.conditions LIKE '%DIAB1%'; -- 拿去试了一下,果然不行 -- 那只能去看大佬们的题解了 -- ............................... -- 巧用 like 关键字的 % SELECT pa.patient_id, pa.patient_name, pa.conditions FROM 1527_Patients pa WHERE pa.conditions LIKE 'DIAB1%' OR pa.conditions LIKE '% DIAB1%'; -- 这两个条件分别表示,conditions 当中 字符串以 DIAB1 开头,结果不管,第二个表示以空格作为分隔符后疾病的前缀
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-07-11 05-Nacos注册中心
2022-07-11 04-Ribbon负载均衡
2022-07-11 03-Eureka注册中心
2022-07-11 02-服务拆分和远程调用
2022-07-11 01-微服务的概念