婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle 實現(xiàn) 一個關鍵字 匹配多個 字段的方法

Oracle 實現(xiàn) 一個關鍵字 匹配多個 字段的方法

熱門標簽:呼倫貝爾智能手機地圖標注 圖像地圖標注 400電話是不是免費申請 安陽外呼系統(tǒng)免費 海南400電話哪里辦理 南寧人工智能電銷機器人費用 分布式呼叫中心 貴陽電話外呼系統(tǒng)哪家好 濟南地圖標注公司

有這么一個需求,滿足只有一個輸入框的條件下,支持不同數(shù)據(jù)列的搜索結果。

說白了,就是這個 輸入框  既可以用來 搜索姓名,也可以搜索 年齡,地址等。

分析:

一般情況下,我們的一個輸入框對應 數(shù)據(jù)庫 的某一列信息的搜索,比如,要搜索姓名為 ‘李' 姓開頭的,那么對應的 sql 就是

where name like '李%'

但是,現(xiàn)在輸入框有了不確定性,不知道用戶到底會輸入什么,導致我們后臺的 sql 不知道該如何對應了,

比如,用戶輸入 18,很明顯,用戶是想搜索 年齡為 18 的用戶,如果 后臺sql 還是 where name like '18%',那么就會 搜索不到內(nèi)容了。

方案一:

我們可以用 or 這種關鍵字來實現(xiàn) 多字段匹配,

比如:where name like '%搜索內(nèi)容%' or age like '%搜索內(nèi)容%'

這種方案對于 搜索字段比較 少的可以嘗試,但是效率不高。

方案二:推薦

我們可以換一種思路

假設我們的數(shù)據(jù)庫每一行都有一個完整的列 (colum),這個列的內(nèi)容為 該行所有字段的內(nèi)容。

那么我們搜索的sql 的可以改寫為 where colum like '%搜索內(nèi)容%'

這樣 不論搜索 姓名 ,還是 年齡,地址 等,我們都可以查到。

既然到這里了,我相信你已經(jīng)明白該怎么做了。

其實,就是用 sql 把需要可能 被用戶搜索的 數(shù)據(jù)庫字段拼接 起來,然后再  like '%搜索內(nèi)容%'  就可以了。

oracle 做法

可以采用 instr() 函數(shù),這里說下 INSTR()函數(shù)的作用

INSTR(參數(shù)1,參數(shù)2)其實是一個查找字符串的函數(shù),返回的是字符串查找的位置,它有兩個參數(shù)都是字符類型,如果找到則返回參數(shù)2在參數(shù)1中的位置,如果沒有找到則返回 0。

SELECT INSTR('abcde', 'a') FROM DUAL;

--------------------------------------------

1

--------------------------------------------

結果分析,因為a在abcde的第一個位置,所以返回1

SELECT INSTR('abcde', 'f') FROM DUAL;

--------------------------------------------

0

--------------------------------------------

 結果分析,因為f在abcde串中找不到,所以返回0

這里 對比 like 與 instr() 函數(shù), 如果對性能 要求比較嚴格的 童鞋,記得來這里 用 instr () 來 替換 like 關鍵字

colum like '%搜索內(nèi)容%'
等價于
instr(colum, '搜索內(nèi)容', 1, 1)>0
colum like '搜索內(nèi)容%'
等價于
instr(colum, '搜索內(nèi)容', 1, 1)=1
colum like '%搜索內(nèi)容'
等價于
instr(colum, '搜索內(nèi)容', 1, -1)=length(colum)-length('搜索內(nèi)容')+1

sql:

oracle    ||   代表拼接多個 數(shù)據(jù)庫列

一般情況:where instr(姓名||年齡||地址,'搜索內(nèi)容',1,1) > 0

如果兩個數(shù)據(jù)列相鄰,采用 ',' 分割,防止搜索到不匹配內(nèi)容:

 where instr(姓名|| ',' || 年齡|| ',' || 地址 ,'搜索內(nèi)容',1,1) > 0

如果字段為空,可以用 nvl (字段名,''),來處理,他的意思是 用 ‘'代替 空的內(nèi)容

mysql

concat 拼接多個數(shù)據(jù)庫 列

instr 查詢

where instr (concat(姓名,年齡,地址),'搜索內(nèi)容') > 0

總結

以上所述是小編給大家介紹的Oracle 實現(xiàn) 一個關鍵字 匹配多個 字段的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

您可能感興趣的文章:
  • oracle數(shù)據(jù)匹配merge into的實例詳解
  • ORACLE數(shù)據(jù)庫對long類型字段進行模糊匹配的解決思路

標簽:南充 合肥 涼山 滁州 遼源 許昌 焦作 郴州

巨人網(wǎng)絡通訊聲明:本文標題《Oracle 實現(xiàn) 一個關鍵字 匹配多個 字段的方法》,本文關鍵詞  Oracle,實現(xiàn),一個,關鍵字,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 實現(xiàn) 一個關鍵字 匹配多個 字段的方法》相關的同類信息!
  • 本頁收集關于Oracle 實現(xiàn) 一個關鍵字 匹配多個 字段的方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 将乐县| 河曲县| 阿坝县| 盐边县| 汤原县| 辽宁省| 洛扎县| 德江县| 南投县| 称多县| 梁河县| 长沙市| 原阳县| 河津市| 哈尔滨市| 拜泉县| 蚌埠市| 中江县| 黔西| 瓦房店市| 额尔古纳市| 岳阳市| 宣威市| 仙桃市| 崇左市| 仁寿县| 滕州市| 南昌市| 三都| 深圳市| 东丰县| 革吉县| 兴义市| 广宗县| 绥中县| 汝州市| 犍为县| 安阳市| 新建县| 巴林左旗| 婺源县|