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

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

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

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

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

分析:

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

where name like '李%'

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

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

方案一:

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

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

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

方案二:推薦

我們可以換一種思路

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

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

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

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

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

oracle 做法

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

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

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

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

1

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

結(jié)果分析,因?yàn)閍在abcde的第一個(gè)位置,所以返回1

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

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

0

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

 結(jié)果分析,因?yàn)閒在abcde串中找不到,所以返回0

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

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

sql:

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

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

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

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

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

mysql

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

instr 查詢

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

總結(jié)

以上所述是小編給大家介紹的Oracle 實(shí)現(xiàn) 一個(gè)關(guān)鍵字 匹配多個(gè) 字段的方法,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(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)更新是一種用于更新多表中某個(gè)表的數(shù)據(jù)時(shí),引用另一個(gè)表中的數(shù)據(jù),以避免數(shù)據(jù)錯(cuò)誤的技術(shù),需要的朋友可以參考下
    2023-07-07
  • oracle中文亂碼解決的辦法

    oracle中文亂碼解決的辦法

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

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

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

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

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

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

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

    oracle中的substr()函數(shù)用法實(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)控工具,可以對(duì)數(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ù)庫 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Oracle數(shù)據(jù)表保留一條重復(fù)數(shù)據(jù)簡(jiǎn)單方法

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

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

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

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

最新評(píng)論

开阳县| 珠海市| 禹州市| 乐亭县| 行唐县| 白山市| 华宁县| 鲁甸县| 原平市| 万荣县| 辽阳县| 二手房| 苗栗县| 罗甸县| 贵定县| 永吉县| 乃东县| 丽水市| 奈曼旗| 平遥县| 措勤县| 荆州市| 黄山市| 专栏| 都昌县| 芮城县| 琼结县| 富平县| 神池县| 长宁县| 武隆县| 邛崃市| 曲麻莱县| 双峰县| 修文县| 甘谷县| 襄垣县| 奇台县| 玛纳斯县| 惠东县| 炉霍县|