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

SQL查詢字段被包含語句

 更新時(shí)間:2017年07月23日 11:25:15   投稿:mrr  
說到SQL的模糊查詢,最先想到的,應(yīng)該就是like關(guān)鍵字。當(dāng)我們需要查詢包含某個(gè)特定字段的數(shù)據(jù)時(shí),往往會使用 ‘%關(guān)鍵字%’ 查詢的方式。具體代碼示例大家參考下本文

前言

說到SQL的模糊查詢,最先想到的,應(yīng)該就是like關(guān)鍵字。

當(dāng)我們需要查詢包含某個(gè)特定字段的數(shù)據(jù)時(shí),往往會使用 ‘%關(guān)鍵字%' 查詢的方式。例如:

SELECT ... FROM 表名 WHERE 字段名 LIKE '%關(guān)鍵字%'

這應(yīng)該可以算是一種典型的”包含XXX”的方式,但如果我們需要查詢字段被包含于特定字符的數(shù)據(jù)時(shí)呢?

比如,我有一張聯(lián)系人數(shù)據(jù)表ConnectName,其中有個(gè)字段用于記錄姓名name。我想獲取名為小蘭和灰原的人的聯(lián)系資料。正常情況下,我們首先能想到的做法應(yīng)該是:

SELECT * FROM ConnectName 
WHERE
  name = '小蘭'
  OR name = '灰原'

這樣的做法是可以實(shí)現(xiàn)這種目的的。如果這時(shí)候,我突然想,再查一個(gè)人,比如說“柯南”,那么我們就要修改SQL的結(jié)構(gòu),添加一個(gè)Where條件句:

SELECT * FROM ConnectName 
WHERE
  name = '小蘭'
  OR name = '灰原'
  OR name = '柯南'

我們知道,OR條件查詢本身是屬于效率較低的,而且結(jié)構(gòu)變動的語句在MyBatis實(shí)現(xiàn)稍微麻煩些(當(dāng)然也是可以實(shí)現(xiàn)的,遍歷插入字段就行了)。

能不能簡單一些呢?我可以把所有關(guān)鍵字放在一起,只用一個(gè)Where條件去實(shí)現(xiàn)嗎?

CHARINDEX登場

這時(shí)候,我們就可以用 CHARINDEX 關(guān)鍵字了,CHARINDEX可以返回某個(gè)字段在一串文字中出現(xiàn)的位置,跟String的indexOf用法類似,不多廢話,我們來舉個(gè)栗子:

CHARINDEX('李白','曹操很帥') =0

在上面的栗子中,因?yàn)椴懿俸軒洸话畎钻P(guān)鍵字,所以找不到,返回0.

CHARINDEX('李白','李白很帥') =1

同樣的栗子,因?yàn)榘锢畎钻P(guān)鍵字,會返回關(guān)鍵字所在的開頭第一個(gè)字的索引,所以返回1.

了解了使用方法之后,我們就可以運(yùn)用CHARINDEX關(guān)鍵字優(yōu)化下我們的SQL語句:

SELECT * FROM ConnectName 
WHERE
  CHARINDEX(name ,'小蘭灰原柯南')>0

如果name字段對應(yīng)的名字在 ‘小蘭灰原柯南' 中出現(xiàn),那么CHARINDEX函數(shù)就會返回大于1,就可以得到我們想要的數(shù)據(jù)啦(他們3個(gè)人也可以在一起愉快的玩??-^)

對應(yīng)的mybatis實(shí)現(xiàn)也相對簡潔

SELECT * FROM ConnectName 
WHERE
  <!--[CDATA[ AND CHARINDEX(name ,#{傳入的參數(shù)}) --> 0 ]]>

如果后期我們想要加入一個(gè)新的人,比如毛利小五郎,只需要在傳入的參數(shù)中加入 ‘小蘭灰原柯南毛利小五郎' 就可以了,是不是簡單了許多呢?

以上所述是小編給大家介紹的SQL字段的被包含查詢語句,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!

相關(guān)文章

最新評論

犍为县| 松原市| 巴中市| 乌拉特中旗| 霍林郭勒市| 华坪县| 清苑县| 海原县| 宁晋县| 连云港市| 太白县| 六安市| 乌兰察布市| 竹北市| 南平市| 青神县| 简阳市| 奈曼旗| 永和县| 栾城县| 武强县| 屏边| 开江县| 资中县| 陆川县| 榆林市| 黔江区| 红桥区| 东海县| 车致| 余干县| 石柱| 监利县| 曲靖市| 东阿县| 荣昌县| 鞍山市| 中方县| 梁河县| 沂南县| 资阳市|