亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

分析:

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

where name like '李%'

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

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

方案一:

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

比如:where name like '%搜索內容%' or age like '%搜索內容%'

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

方案二:推薦

我們可以換一種思路

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

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

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

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

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

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 '%搜索內容%'
等價于
instr(colum, '搜索內容', 1, 1)>0
colum like '搜索內容%'
等價于
instr(colum, '搜索內容', 1, 1)=1
colum like '%搜索內容'
等價于
instr(colum, '搜索內容', 1, -1)=length(colum)-length('搜索內容')+1

sql:

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

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

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

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

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

mysql

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

instr 查詢

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

總結

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

相關文章

  • Oracle知識整理筆記

    Oracle知識整理筆記

    這是一篇Oracle知識整理筆記,包括SQL Server和Oracle的比較、Oracle中基本的概念和關系、管理工具pl/sql Developer和如何分配權限和角色,需要的朋友可以參考下
    2015-09-09
  • Oracle單行子查詢返回多行結果的問題解決

    Oracle單行子查詢返回多行結果的問題解決

    這篇文章主要給大家介紹了關于Oracle中單行子查詢返回多行結果的問題解決的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用oracle具有一定的參考學習價值,需要的朋友可以參考下
    2023-07-07
  • oracle設置密碼復雜度及設置超時退出的功能

    oracle設置密碼復雜度及設置超時退出的功能

    我們都知道密碼策略加固的參數(shù)一般包括密碼長度、復雜度檢測、最大最小使用時間、過期警報時間、最大登錄失敗次數(shù)以及鎖定時間等設置,下面這篇文章主要給大家介紹了關于oracle設置密碼復雜度及設置超時退出功能的相關資料,需要的朋友可以參考下
    2022-06-06
  • 解決Oracle模擬事務提交、表鎖,處理表鎖問題

    解決Oracle模擬事務提交、表鎖,處理表鎖問題

    這篇文章主要介紹了Oracle模擬事務提交、表鎖,處理表鎖問題,通過可視化工具navicat執(zhí)行插入語句,發(fā)現(xiàn)雖然我們設置了不自動提交,這里還是插入成功了,這里給大家介紹下手動提交事務流程,需要的朋友可以參考下
    2022-09-09
  • Oracle中PL/SQL的塊與表達式

    Oracle中PL/SQL的塊與表達式

    這篇文章介紹了Oracle中PL/SQL的塊與表達式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • oracle邏輯結構分析

    oracle邏輯結構分析

    這篇文章主要介紹了oracle邏輯結構分析,邏輯清楚,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • Oracle數(shù)據(jù)表保留一條重復數(shù)據(jù)簡單方法

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

    最近開發(fā)的時候遇到一個任務,需要對重復的數(shù)據(jù)進行篩選,所以下面這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)表保留一條重復數(shù)據(jù)的簡單方法,需要的朋友可以參考下
    2023-11-11
  • 使用zabbix監(jiān)控oracle表數(shù)據(jù)的方法

    使用zabbix監(jiān)控oracle表數(shù)據(jù)的方法

    有時候我們需要對表中的數(shù)據(jù)進行監(jiān)控,比如筆者的這種場景:?微服務自己實現(xiàn)了定時任務,定時任務的執(zhí)行結果會記錄到某張日志表中,如果定時任務執(zhí)行失敗將會對業(yè)務產(chǎn)生影響,所以筆者用zabbix+python進行了監(jiān)控,當任務失敗時?進行告警,需要的朋友可以參考下
    2024-04-04
  • PLSQL Developer連接oracle數(shù)據(jù)庫配置教程

    PLSQL Developer連接oracle數(shù)據(jù)庫配置教程

    這篇文章主要介紹了PLSQL Developer連接oracle數(shù)據(jù)庫配置步驟,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 整理Oracle數(shù)據(jù)庫中數(shù)據(jù)查詢優(yōu)化的一些關鍵點

    整理Oracle數(shù)據(jù)庫中數(shù)據(jù)查詢優(yōu)化的一些關鍵點

    這篇文章主要介紹了Oracle數(shù)據(jù)庫中數(shù)據(jù)查詢優(yōu)化的一些關鍵點的整理,包括多表和大表查詢等情況的四個方面的講解,需要的朋友可以參考下
    2016-01-01

最新評論