2012-11-05 109 views
0

嗨,大家好,這是一個問題:檢測如果一個字符串的一部分匹配另一個字符串

顯示員工的員工ID和電子郵件,其電子郵件地址中有充分的姓氏。

您認爲我可以使用什麼?我可以使用substr嗎?如果沒有,還有其他建議嗎?謝謝你們和平!

+1

基本的SQL就足夠了。不需要字符串功能。 –

+1

只是把它拿出來讓它運行; substr或任何你想到的,它會以最快的方式學習=) – cctan

+0

@LolCoder我試了一些東西。 ^^你能告訴我代碼是否有效嗎?因爲我沒有Oracle。 :'< –

回答

0

我會使用正則表達式,例如

CREATE TABLE employees (
    emp_id  NUMBER PRIMARY KEY, 
    first_name VARCHAR2(30), 
    last_name VARCHAR2(30), 
    email  VARCHAR2(255) 
); 

INSERT INTO employees VALUES (1, 'Joseph', 'Ratzinger', '[email protected]'); 
INSERT INTO employees VALUES (2, 'Tim', 'Cook', '[email protected]'); 
INSERT INTO employees VALUES (3, 'Larry', 'Ellison', '[email protected]'); 
INSERT INTO employees VALUES (4, 'Michael', 'Dell', '[email protected]'); 

SELECT emp_id, email FROM employees WHERE regexp_like(email, last_name); 
3 [email protected] 

要包括獨立的情況下的結果,使用:

SELECT emp_id, email FROM employees WHERE regexp_like(email, last_name, 'i'); 
2 [email protected] 
3 [email protected] 
4 [email protected] 

如果您需要排除的主機名,或者一個「@」附加到該模式...

SELECT emp_id, email FROM employees WHERE regexp_like(email, last_name||'@', 'i'); 
2 [email protected] 
3 [email protected] 

...或從電子郵件中提取主機名:

SELECT emp_id, email 
    FROM employees 
WHERE regexp_like(regexp_substr(email,'.*@'), last_name, 'i'); 
相關問題