gpt4 book ai didi

mysql - 删除MySQL中加号后面的所有内容

转载 作者:行者123 更新时间:2023-11-29 11:41:55 24 4
gpt4 key购买 nike

我在 MySQL 中有一个查询

select various(functions(here(...))) foo, count(*) ct
from table
group by foo
having ct > 1;

查找重复数据。我想更改查询以从 foo 中删除加号及其后面的任何内容,以便 if various(functions(here(...))) 产生 foo+bar 我只得到foo。 (如果没有出现加号,则保持不变。)

最好的方法是什么?我可以使用替换

select if(locate("+", various(functions(here(...))))>0, left(various(functions(here(...))), locate("+", various(functions(here(...)))) - 1), various(functions(here(...)))) foo, count(*) ct
from table
where conditions
group by foo
having ct > 1;

但这似乎“显然”是错误的事情。正则表达式会很好,但据我所知,MySQL 中不存在正则表达式。子查询使这个稍微不那么笨拙

select if(locate("+", bar)>0, left(bar, locate("+", bar)-1), bar) foo
from table
left join (
select pkey, various(functions(here(...))) bar
from table
where conditions
) subtable using(pkey)
group by foo
having ct > 1
;

但是由于表格很大,我想知道是否有更高效或更易于维护的解决方案。

最佳答案

使用substring_index():

select substring_index(various(functions(here(...))), '+', 1) as foo, count(*) ct
from table
group by foo
having ct > 1;

关于mysql - 删除MySQL中加号后面的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637990/

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