首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组依据操作

分组依据操作
EN

Stack Overflow用户
提问于 2021-03-08 16:32:39
回答 2查看 40关注 0票数 0

我有一个SQL表。其中我需要使用group by操作。要在group by子句中使用的列是value,如果包含"cr“或"dr”,则需要将列值替换为空字符串,然后继续执行group by。

如果列描述以'cr‘或'dr’开头,我们必须将它的第一次出现替换为empty.Like 'cr abcd‘将变为'abcd’,并且前两行可以匹配。此外,“cr abcdcr def”将是“abcdcr def”,仅当以“cr”或“dr”开头需要替换时才会第一次出现。

代码语言:javascript
复制
**Select description from xyz group by description(replace 'cr or dr with empty')**


 Desired result is - abcd , abcdef, abcdefcr
EN

回答 2

Stack Overflow用户

发布于 2021-03-08 17:01:34

您可以尝试使用下面的查询。这将仅更新第一个匹配项。

代码语言:javascript
复制
Select 
CASE WHEN description like 'cr%' THEN
CONCAT(
  SUBSTRING(description, 1,  locate('cr',description)-1),
  SUBSTRING(description,locate('cr',description)+2,length(description))) 
WHEN description like 'dr%' THEN 
CONCAT(
  SUBSTRING(description, 1,  locate('dr',description)-1),
  SUBSTRING(description,locate('dr',description)+2,length(description))) 
ELSE
description END  
as Result

from xyz 
group by
CASE WHEN description like 'cr%' THEN
CONCAT(
  SUBSTRING(description, 1,  locate('cr',description)-1),
  SUBSTRING(description,locate('cr',description)+2,length(description))) 
WHEN description like 'dr%' THEN 
CONCAT(
  SUBSTRING(description, 1,  locate('dr',description)-1),
  SUBSTRING(description,locate('dr',description)+2,length(description))) 
ELSE
description END 
票数 0
EN

Stack Overflow用户

发布于 2021-03-08 21:01:23

您还没有说明数据库。在标准SQL中,您可以执行以下操作:

代码语言:javascript
复制
select distinct (case when description like 'cr %' or description like 'dr %'
             then substring(description from 4)
             else description
        end) as new_description
from xyz;

不清楚为什么聚合是必要的,所以我将其更改为select distinct

注意:任何特定数据库中的确切语法都可能与上面的语法略有不同。

编辑:

在MySQL中,您可以使用:

代码语言:javascript
复制
select distinct (case when description like 'cr %' or description like 'dr %'
             then substr(description, 4)
             else description
        end) as new_description
from xyz;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66526522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档