当前位置: 首页> 教育> 就业 > 百姓网二手车_宁波正规网站建设使用方法_怎么在广告联盟接广告_百度收录关键词查询

百姓网二手车_宁波正规网站建设使用方法_怎么在广告联盟接广告_百度收录关键词查询

时间:2025/7/12 3:00:20来源:https://blog.csdn.net/2302_77975940/article/details/142359671 浏览次数:0次
百姓网二手车_宁波正规网站建设使用方法_怎么在广告联盟接广告_百度收录关键词查询

#改题目来源于力扣:

1527. 患某种疾病的患者 - 力扣(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 开头的疾病。

思路流程:

1.由此可见,我们需要返回字符串是以前缀“DIAB1”的所有患者,这时候可以利用正则表达式进行匹配:

\\bDIAB1

其中\b表达匹配单词边界,放在字符串前可以匹配以这个字符串开头的字符串,放在字符串后可以匹配以这个字符串结尾的字符串,放在两边表示只匹配这个字符串。\\b表示对\b进行转义。

2.当然,我们可以利用MySQL的模糊匹配进行查找。%作为通配符,和正则表达式里的\b有区别:

  • %字符串:匹配以“字符串”结尾的记录。
  • 字符串%:匹配以“字符串”开头的记录。
  • %字符串%:匹配包含“字符串”的记录。

在这里,我们可以发现以DIAB1开头的情况有两种,一种是DIAB1位于字符串首位,一种是DIAB1位于总字符串中间,被空格隔开了,所以它的开头有一个空格,利用模糊匹配要考虑到所有情况,比正则表达式难一些。

"DIAB1%" OR "% DIAB1%"
#以“DIAB1”开头的字符串以及包含“ DIAB1”的字符串

代码实现:

# Write your MySQL query statement below
SELECT * 
FROM Patients
WHERE conditions REGEXP '\\bDIAB1'

 或者:

SELECT *
FROM Patients
WHERE conditions LIKE "DIAB1%" OR conditions LIKE "% DIAB1%"

题后思考:

既然要表达开头,为什么不可以用'^DIAB1'而是用''\\bDIAB1'?

因为“^”符号表达的开头匹配,必须且只能在最前面才可以,而题目中所谓的“开头”DIAB1,有时候会在第二个字符串里,不再最前方第一个字符串的开头,造成BUG.

而\b表达的是字符串的边界,即如果把\b放在DIAB1之前,不管DIAB1在第几个字符串,只要是以它开头就都会匹配到。

关键字:百姓网二手车_宁波正规网站建设使用方法_怎么在广告联盟接广告_百度收录关键词查询

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: