gpt4 book ai didi

MySQL 在特定列中找到字符串模式的最后一次出现

转载 作者:行者123 更新时间:2023-12-01 00:13:28 24 4
gpt4 key购买 nike

我有一个 mysql 表,其中有一列,例如称为名。列数据具有特定的模式 nameBase+number。例如

name
----------
test0
test1
test2
stack0
stack1
stack2

每次我想向列中添加数据时,我必须找到特定 nambeBase 的最后一个数字并添加新条目 +number+1。

例如,如果现在test来了,我必须将test3添加到db。

我的问题:最好的方法是 1. 检查 nameBase 是否已经存在于数据库中(类似包含的东西)和 2. 找到姓氏 nameBase 号码。例如。这里用于测试的是 3。

更新:每个人,一个更新。我终于使用了java Pattern类。如此酷和简单。它让一切变得如此简单。我可以将/d 添加到模式,然后我可以检查它是否与名称匹配,并且可以使用模式组轻松访问第二部分。

最佳答案

这里真正的解决方案是更改数据库架构,将其拆分为 列,即名称和编号。然后通过

获取聚合 MAX() 就变得微不足道了
SELECT name, MAX(num) AS num FROM tbl GROUP BY name

但是,如果无法更改它,我建议使用 REPLACE() 从列值中删除名称部分,在查询时只留下数字部分,并获取它的聚合 MAX() 以找到它的最大现有数字:

SELECT
MAX(REPLACE(name, <the name to search>, '')) AS maxnum
FROM tbl
WHERE
name LIKE '<the name to search>%'

或者使用正则表达式代替 LIKE,它比 LIKE 更准确(如果名称包含另一个名称,LIKE 可能匹配)但更昂贵:

SELECT
MAX(REPLACE(name, <the name to search>, '')) AS maxnum
FROM tbl
WHERE
name REGEXP '^<the name to search>[0-9]+$'

关于MySQL 在特定列中找到字符串模式的最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11378456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com