最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年05月16日 17:35:17   作者:stormlong  
這篇文章主要介紹了Oracle 實現(xiàn) 一個關(guān)鍵字 匹配多個 字段的方法,本文給大家提供兩個方案,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下

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

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

分析:

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

where name like '李%'

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

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

方案一:

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

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

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

方案二:推薦

我們可以換一種思路

假設(shè)我們的數(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

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

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

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

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

0

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Oracle關(guān)聯(lián)表更新操作指南

    Oracle關(guān)聯(lián)表更新操作指南

    這篇文章主要給大家介紹了關(guān)于Oracle關(guān)聯(lián)表更新操作的相關(guān)資料, Oracle關(guān)聯(lián)更新是一種用于更新多表中某個表的數(shù)據(jù)時,引用另一個表中的數(shù)據(jù),以避免數(shù)據(jù)錯誤的技術(shù),需要的朋友可以參考下
    2023-07-07
  • oracle中文亂碼解決的辦法

    oracle中文亂碼解決的辦法

    oracle中文亂碼解決的辦法,需要的朋友可以參考一下
    2013-02-02
  • Oracle 分區(qū)索引介紹和實例演示

    Oracle 分區(qū)索引介紹和實例演示

    這篇文章主要介紹了Oracle 分區(qū)索引介紹和實例演示,分區(qū)索引(或索引分區(qū))主要是針對分區(qū)表而言的,本文主要描述了分區(qū)索引的相關(guān)特性并給出演示示例,需要的朋友可以參考下
    2014-09-09
  • DBeaver轉(zhuǎn)儲數(shù)據(jù)庫和恢復(fù)數(shù)據(jù)庫詳細(xì)操作指南

    DBeaver轉(zhuǎn)儲數(shù)據(jù)庫和恢復(fù)數(shù)據(jù)庫詳細(xì)操作指南

    DBeaver是一款支持多種數(shù)據(jù)庫系統(tǒng)的開源管理工具,這篇文章主要介紹了DBeaver轉(zhuǎn)儲數(shù)據(jù)庫和恢復(fù)數(shù)據(jù)庫的詳細(xì)操作指南,包括轉(zhuǎn)儲數(shù)據(jù)庫的步驟和恢復(fù)數(shù)據(jù)庫的步驟,并探討了DBeaver的一些高級功能,需要的朋友可以參考下
    2025-03-03
  • PLSQL導(dǎo)入dmp文件的詳細(xì)完整步驟

    PLSQL導(dǎo)入dmp文件的詳細(xì)完整步驟

    plsql導(dǎo)入.sql和.dmp文件時,會經(jīng)常用到,對于初學(xué)者來說可能沒有那么簡單,畢竟oracle數(shù)據(jù)庫比較麻煩,下面這篇文章主要給大家介紹了關(guān)于PLSQL導(dǎo)入dmp文件的詳細(xì)完整步驟,需要的朋友可以參考下
    2023-05-05
  • oracle中的substr()函數(shù)用法實例詳解

    oracle中的substr()函數(shù)用法實例詳解

    這篇文章主要給大家介紹了關(guān)于oracle中substr()函數(shù)用法的相關(guān)資料,substr函數(shù)是用于字符串的截取的函數(shù),只適用于string類型,并不適用于字符數(shù)組,需要的朋友可以參考下
    2023-11-11
  • Oracle使用EMCC監(jiān)控當(dāng)前所有數(shù)據(jù)庫的流程步驟

    Oracle使用EMCC監(jiān)控當(dāng)前所有數(shù)據(jù)庫的流程步驟

    EMCC,全稱Oracle Enterprise Manager Cloud Control,是Oracle提供的一套集中化監(jiān)控工具,可以對數(shù)據(jù)庫、操作系統(tǒng)、中間件等進(jìn)行監(jiān)控,本文小編給大家介紹了Oracle使用EMCC監(jiān)控當(dāng)前所有數(shù)據(jù)庫的流程步驟,需要的朋友可以參考下
    2024-09-09
  • 詳解PL/SQL Developer連接本地Oracle 11g 64位數(shù)據(jù)庫

    詳解PL/SQL Developer連接本地Oracle 11g 64位數(shù)據(jù)庫

    本篇文章主要介紹了PL/SQL Developer連接本地Oracle 11g 64位數(shù)據(jù)庫 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Oracle數(shù)據(jù)表保留一條重復(fù)數(shù)據(jù)簡單方法

    Oracle數(shù)據(jù)表保留一條重復(fù)數(shù)據(jù)簡單方法

    最近開發(fā)的時候遇到一個任務(wù),需要對重復(fù)的數(shù)據(jù)進(jìn)行篩選,所以下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)表保留一條重復(fù)數(shù)據(jù)的簡單方法,需要的朋友可以參考下
    2023-11-11
  • Oracle刪除表前判斷表名是否存在若存在則刪除

    Oracle刪除表前判斷表名是否存在若存在則刪除

    在Oracle中若刪除一個不存在的表則會提示表或視圖不存在,這就需要我們再刪除表前判斷該表是否存在,若存在則刪除,感興趣的朋友可以了解下本文
    2013-11-11

最新評論

沁源县| 揭东县| 贞丰县| 太谷县| 宣汉县| 佛坪县| 临西县| 桑植县| 绿春县| 延川县| 高邮市| 汝城县| 应城市| 新丰县| 水城县| 壤塘县| 格尔木市| 仙游县| 乌拉特前旗| 固原市| 珲春市| 江西省| 九江县| 牟定县| 聂拉木县| 株洲县| 三江| 寿阳县| 汤阴县| 修武县| 福海县| 长寿区| 宁晋县| 黄山市| 石家庄市| 三亚市| 尚志市| 阳泉市| 新平| 牡丹江市| 阳信县|