的H組匹配,甲骨文圖案by子句
如何使用模式匹配功能 「GROUP BY」 子句。
下面是數據
emp_name transaction_id
John 1001
John= 1002
Peter 1003
我想組基於EMP_NAME。這裏'John'和'John ='都是同一名僱員。如果員工姓名在列末尾有'='號,我想忽略它。
預期結果:
Emp_name countt
John 2
Peter 1
的H組匹配,甲骨文圖案by子句
如何使用模式匹配功能 「GROUP BY」 子句。
下面是數據
emp_name transaction_id
John 1001
John= 1002
Peter 1003
我想組基於EMP_NAME。這裏'John'和'John ='都是同一名僱員。如果員工姓名在列末尾有'='號,我想忽略它。
預期結果:
Emp_name countt
John 2
Peter 1
replace
工作正常,速度很快。但是,既然你要求模式匹配,這裏有一個模式答案:
SELECT regexp_replace(emp_name, '=$', ''), count(*) AS countt
FROM employees
GROUP BY regexp_replace(emp_name, '=$', '');
你是第一個處理=只應該在名稱末尾被替換的人...... – Hambone
select
replace (emp_name, '=', '') as emp_name,
count (*) as countt
from employees
group by replace (emp_name, '=', '')
編輯,因爲你說,名稱可以包含一個=
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
如果'='符號結束,則需要忽略它。例如,John和Jo = hn是不同的。但John和John =是同一名僱員。 – Srinivasan
是'='唯一的限制嗎? – xQbert
是的。 '='是唯一的條件 – Srinivasan
它需要忽略'='符號是否結束。例如,John和Jo = hn是不同的。但John和John =是同一名員工 – Srinivasan