我的查詢陳述句中有這個問題,我必須排除所有名字以 y 結尾的銷售人員(Lily、Maddy),并且不能使用關鍵字“LIKE”。
到目前為止,這是我的查詢和輸出,即使添加了以字母 y 結尾的名稱的排除,它也應該是這樣的:
預期輸出但沒有排除
添加諸如“REGEXP_LIKE”之類的命令時:
在此處輸入圖片說明
TL;DR我需要找到一種方法來排除我表中所有以字母 y 結尾的名稱,而無需去掉 Emp Name 中的 ,并且不使用關鍵字“LIKE”
uj5u.com熱心網友回復:
如果您想避免名字以 Y 結尾的每個人,請使用以下命令:
where substr(first_name, -1) <> 'y'
uj5u.com熱心網友回復:
由于您沒有發布任何示例資料,我自己制作了一些。
SQL> with
2 employees (employee_id, first_name, last_name) as
3 (select 1, 'Freya', 'Gomez' from dual union all
4 select 2, null , null from dual union all
5 select 9, 'Lily' , 'Marlen' from dual
6 ),
7 orders (salesman_id, order_id) as
8 (select 2, 100 from dual union all
9 select 9, 900 from dual
10 )
11 select e.employee_id,
12 e.first_name ||', '|| e.last_name full_name,
13 o.order_id
14 from employees e left join orders o on o.salesman_id = e.employee_id
15 order by e.employee_id;
EMPLOYEE_ID FULL_NAME ORDER_ID
----------- ------------- ----------
1 Freya, Gomez
2 , 100
9 Lily, Marlen 900 --> you want to get rid of this row
-- because Lily ends with a "y"
SQL>
如果你添加一個WHERE子句(第 15 行),你會得到錯誤的結果,因為 - 正如你所說 - 你想保留逗號行:
<snip>
11 select e.employee_id,
12 e.first_name ||', '|| e.last_name full_name,
13 o.order_id
14 from employees e left join orders o on o.salesman_id = e.employee_id
15 where substr(e.first_name, -1) <> 'y'
16 order by e.employee_id;
EMPLOYEE_ID FULL_NAME ORDER_ID
----------- ------------- ----------
1 Freya, Gomez
SQL>
NVL來救援!見第 15 行:
<snip>
11 select e.employee_id,
12 e.first_name ||', '|| e.last_name full_name,
13 o.order_id
14 from employees e left join orders o on o.salesman_id = e.employee_id
15 where nvl(substr(e.first_name, -1), ',') <> 'y' --> this
16 order by e.employee_id;
EMPLOYEE_ID FULL_NAME ORDER_ID
----------- ------------- ----------
1 Freya, Gomez
2 , 100
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314300.html
