日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle只匹配中文,Oracle 实现 一个关键字 匹配多个 字段

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle只匹配中文,Oracle 实现 一个关键字 匹配多个 字段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

分析:

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

where name like '李%'

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

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

方案一:

我們可以用 or 這種關鍵字來實現 多字段匹配,

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

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

方案二:推薦

我們可以換一種思路

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

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

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

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

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

oracle 做法

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

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

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

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

1

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

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

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

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

0

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

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

這里 對比 like 與?instr() 函數, 如果對性能 要求比較嚴格的 童鞋,記得來這里 用 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? ? ||? ?代表拼接多個 數據庫列

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

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

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

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

mysql

concat 拼接多個數據庫 列

instr 查詢

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

總結

以上是生活随笔為你收集整理的oracle只匹配中文,Oracle 实现 一个关键字 匹配多个 字段的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。