台灣最大程式設計社群網站
線上人數
1544
 
會員總數:243174
討論主題:187988
歡迎您免費加入會員
討論區列表 >> Oracle >> Like的用法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Like的用法
價值 : 20 QP  點閱數:3058 回應數:5

樓主

bubu
門外漢
0 19
261 34
發送站內信

Dear all
我希望找出a_table欄位中姓陳和姓林的人,基本寫法是這樣
slect * from a_table where a_table.name like '陳%' and a_table.name like '林%'
但如果我想找的姓氏被收集在b_table.name的欄位中(有很多個,無法一個一個列出),我該如何使用like,我寫法這樣,但會發生一個row回傳多值的錯誤
slect * from a_table where a_table.name like (select b_table.name from b_table)

請問該如何設計SQL



本篇文章發表於2011-03-01 23:38
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

bubu
檢舉此回應
Dear
目前想到一個寫法,但沒有環境測試,請問這樣子查詢的寫法是合理的嗎,或是各位有甚麼好的方式能提供給我做參考~
slect * from a_table where a_table.name like '%'||(select b_table.name from b_table)||'%'


本篇文章回覆於2011-03-01 23:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

QQ
檢舉此回應
select * from a_table where substr(a_table.name,1,1) in (select b_table.name from b_table)

目前想到的方式
本篇文章回覆於2011-03-02 09:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

QQ
檢舉此回應
this better
要考慮複姓


select * from a_table ,b_table
where substr(a_table.name,1,length(b_table.name)) = b_table.name
本篇文章回覆於2011-03-02 09:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

花旗蔘
檢舉此回應
select * from a_table where substr(a_table.name,1,1) in (select 姓 from b_table);
本篇文章回覆於2011-03-02 10:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Takashi
檢舉此回應
LIKE 可實踐資料中的模糊查詢操作,如果要用LIKE則必須使用以下兩個匹配符

(1) "_" : 匹配任意一位符號

(2)"%" : 匹配任意的符號(包含匹配 0位、1位、多位)

Ex: 查詢所有雇員姓名中以字母A開頭之雇員資訊

(tips: 字串 用 單引號 表示)

第一個字母A固定,其餘內容隨意。

select *
from emp
where ename LIKE 'A%';


Ex: 查詢所有雇員姓名中第二個字母是M之雇員資訊

第一位可任意但必須占一位 --> 使用 "_"

後面位子隨意 --> 使用 "%"

select *
from emp
where ename LIKE '_M%';

Ex: 查詢所有雇員姓名中任意位置上存在有A之雇員資訊

開頭、結尾、中間都能有A

使用 "%A%"

select *
from emp
where ename LIKE '%A%';



本篇文章回覆於2017-05-16 14:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.