GROUPBY子句中的Oracle模式匹配
H, 如何在“GROUPBY”子句中使用模式匹配函数 以下是数据GROUPBY子句中的Oracle模式匹配,oracle,Oracle,H, 如何在“GROUPBY”子句中使用模式匹配函数 以下是数据 emp_name transaction_id John 1001 John= 1002 Peter 1003 我想根据emp_名称分组。这里的“John”和“John=”都是同一个雇员。我想忽略员工姓名是否在列的末尾有“=”符号 预期结果: Emp_name countt John 2 Peter 1 编辑,因为您说过名称可以包含= select case when
emp_name transaction_id
John 1001
John= 1002
Peter 1003
我想根据emp_名称分组。这里的“John”和“John=”都是同一个雇员。我想忽略员工姓名是否在列的末尾有“=”符号
预期结果:
Emp_name countt
John 2
Peter 1
编辑,因为您说过名称可以包含=
select
case
when emp_name like '%='
then substr (emp_name, 1, length (emp_name) - 1)
else emp_name
end as emp_name,
count (1) as countt
from employees
group by
case
when emp_name like '%='
then substr (emp_name, 1, length (emp_name) - 1)
else emp_name
end
编辑,因为您说过名称可以包含=
select
case
when emp_name like '%='
then substr (emp_name, 1, length (emp_name) - 1)
else emp_name
end as emp_name,
count (1) as countt
from employees
group by
case
when emp_name like '%='
then substr (emp_name, 1, length (emp_name) - 1)
else emp_name
end
一个简单的case语句,仅替换最右边的=如果存在
SELECT case when right(emp_name,1) = '=' then left(emp_Name,len(emp_name-1))
else emp_name end as EmpName, count(Transaction_ID) countt
FROM dataTable
GROUP BY case when right(emp_name,1) = '=' then left(emp_Name,len(emp_name-1))
else emp_name end
一个简单的case语句,仅替换最右边的=如果存在
SELECT case when right(emp_name,1) = '=' then left(emp_Name,len(emp_name-1))
else emp_name end as EmpName, count(Transaction_ID) countt
FROM dataTable
GROUP BY case when right(emp_name,1) = '=' then left(emp_Name,len(emp_name-1))
else emp_name end
replace
工作正常,速度快。但是,既然您要求进行模式匹配,下面是一个带有模式的答案:
SELECT regexp_replace(emp_name, '=$', ''), count(*) AS countt
FROM employees
GROUP BY regexp_replace(emp_name, '=$', '');
replace
工作正常,速度快。但是,既然您要求进行模式匹配,下面是一个带有模式的答案:
SELECT regexp_replace(emp_name, '=$', ''), count(*) AS countt
FROM employees
GROUP BY regexp_replace(emp_name, '=$', '');
“=”是唯一的限制吗?是的是在“=”符号位于末尾时需要忽略的唯一条件。例如,John和Jo=hn是不同的。但是约翰和约翰是同一个雇员是唯一的限制吗?是的是在“=”符号位于末尾时需要忽略的唯一条件。例如,John和Jo=hn是不同的。但是John和John=是同一个雇员如果“=”符号在末尾,则需要忽略。例如,John和Jo=hn是不同的。但是John和John=是同一个雇员。如果“=”符号在末尾,则需要忽略它。例如,John和Jo=hn是不同的。但是John和John=是同一个员工。您是第一个处理只应在名称末尾替换=的人…您是第一个处理只应在名称末尾替换=的人。。。