1527. 患某种疾病的患者
思路与题解
题目要求:
查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。按 任意顺序 返回结果表。
这个题目要求就是让我们查询字段conditions,选择出值内数据包含前缀 DIAB1的数据。
匹配指定字符串,我们可以使用正则,构造正则表达式,并匹配数据。
这个题目的正则表达式是前缀为DIAB1== 单词开头是DIAB1而不是单词内包含DIAB1 ,这里匹配单词的开头
正则表达式如下:
sql
'(^|\\s)DIAB1\\S*'
\\b 是一个单词边界的元字符,它确保我们匹配的是一个单词的开始。
DIAB1 是我们要匹配的具体字符串,表示以 "DIAB1" 开头的疾病条件。
.* 表示匹配零个或多个任意字符。这意味着我们不仅匹配以 "DIAB1" 开头的字符串,而且匹配该字符串后的任意字符序列。
题目的完整sql代码如下:
sql
SELECT patient_id, patient_name, conditions
FROM Patients
WHERE conditions REGEXP '\\bDIAB1.*';