談談SQL查詢欄位被包含語句問題
說到SQL的模糊查詢,最先想到的,應該就是like關鍵字。當我們需要查詢包含某個特定欄位的資料時,往往會使用 ‘%關鍵字%’ 查詢的方式。具體程式碼範例大家參考下本文
前言
#說到SQL的模糊查詢,最先想到的,應該就是like關鍵字。
當我們需要查詢包含某個特定欄位的資料時,往往會使用 ‘%關鍵字%' 查詢的方式。例如:
SELECT ... FROM 表名 WHERE 字段名 LIKE '%关键字%'
這應該可以算是一種典型的」包含XXX」的方式,但如果我們需要查詢欄位被包含於特定字元的資料時呢?
例如,我有一張聯絡人資料表ConnectName,其中有個欄位用於記錄姓名name。我想取得名為小蘭和灰原的人的聯絡資料。正常情況下,我們首先能想到的做法應該是:
SELECT * FROM ConnectName WHERE name = '小兰' OR name = '灰原'
這樣的做法是可以實現這種目的的。如果這時候,我突然想,再查一個人,比如說“柯南”,那麼我們就要修改SQL的結構,加上一個Where條件句:
SELECT * FROM ConnectName WHERE name = '小兰' OR name = '灰原' OR name = '柯南'
我們知道,OR條件查詢本身是屬於效率較低的,而且結構變動的語句在MyBatis實現稍微麻煩些(當然也是可以實現的,遍歷插入字段就行了)。
能不能簡單一點呢?我可以把所有關鍵字放在一起,只用一個Where條件去實現嗎?
CHARINDEX登場
這時候,我們就可以用CHARINDEX 關鍵字了,CHARINDEX可以回傳某個欄位在一串文字中出現的位置,跟String的indexOf用法類似,不多廢話,我們來舉個栗子:
CHARINDEX('李白','曹操很帅') =0
在上面的栗子中,因為曹操很帥不包含李白關鍵字,所以找不到,回傳0.
CHARINDEX('李白','李白很帅') =1
同樣的栗子,因為包含裡李白關鍵字,會回傳關鍵字所在的開頭第一個字的索引,所以返回1.
了解了使用方法之後,我們就可以運用CHARINDEX關鍵字優化下我們的SQL語句:
SELECT * FROM ConnectName WHERE CHARINDEX(name ,'小兰灰原柯南')>0
如果name字段對應的名字在'小蘭灰原柯南' 中出現,那麼CHARINDEX函數就會回傳大於1,就可以得到我們想要的資料啦(他們3個人也可以在一起愉快的玩耍咯^-^)
對應的mybatis實作也相對簡潔
SELECT * FROM ConnectName WHERE <!--[CDATA[ AND CHARINDEX(name ,#{传入的参数}) --> 0 ]]>
如果後期我們想要加入一個新的人,例如毛利小五郎,只需要在傳入的參數中加入'小蘭灰原柯南毛利小五郎' 就可以了,是不是簡單了許多呢?
以上是談談SQL查詢欄位被包含語句問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

jQuery是一個著名的JavaScript函式庫,它提供了簡潔而強大的功能,用來簡化JavaScript程式設計。當將jQuery引入你的網頁專案時,你需要在HTML檔案中加入以下程式碼來引入必須的套件:我的網頁

Java中的NoSuchFieldError-找不到欄位的解決方法Java是一門高階程式語言,廣泛應用於企業級應用和大規模資料處理。在Java的開發過程中,可能會出現NoSuchFieldError這樣的錯誤。這個錯誤表示JVM在執行時無法找到所需的欄位。在本文中,我們將深入研究NoSuchFieldError以及如何解決它。什麼是NoSuchFieldE

如何使用JavaScript判斷一個字串是否包含特定字元?在JavaScript中,我們可以使用幾種方法來判斷一個字串是否包含特定字元。以下將介紹三種常用的方法,並給出對應的程式碼範例。方法一:使用indexOf()方法可以使用字串的indexOf()方法來判斷一個字串是否包含指定的字元。它會傳回特定字元在字串中第一次出現的位置索引,如

PHP是一種廣泛應用於網站開發的腳本語言,對於開發者來說,常常需要判斷欄位是否為空。在PHP中,判斷欄位是否為空可以透過一些簡單的方法來實現。本文將介紹在PHP中如何判斷欄位是否為空,並提供具體的程式碼範例供大家參考。在PHP中,通常可以使用empty()函數或isset()函數來判斷欄位是否為空。接下來我們分別介紹這兩個函數的用法。使用empty()函數

隨著Web應用程式的發展,PHP語言在Web開發中得到了廣泛應用。而在PHP8.0版本中,一個新的語言特性被引入-multi-catch語句。什麼是multi-catch語句?在先前的PHP版本中,對於多個異常類型的處理,開發人員需要寫多個catch語句。例如,如下程式碼區塊展示了兩種不同異常的處理:try{//Somecodethatmay

mysql欄位是mysql資料庫表中具有特定類型和長度的列,用於儲存資料。在mysql中,每個欄位都必須有一個特定的資料類型,常見的資料類型包括整數、浮點數、字串、日期和時間,這些資料類型決定了mysql可以在每個欄位中儲存的資料。

如何實作MySQL中插入資料的語句?在使用MySQL資料庫時,插入資料是一項非常基礎且常見的操作。透過插入數據,可以將新的記錄新增到資料庫表中,為業務操作提供支援。本文將介紹如何使用MySQL中的INSERT語句來實作資料插入操作,並提供具體的程式碼範例。 MySQL中的INSERT語句用來向資料庫表中插入新的記錄。其基本語法格式如下:INSERTINTOt

增加表格中欄位的方法:1、使用「ALTER TABLE 表名ADD 新欄位名稱資料類型;」語句在末尾新增欄位;2、使用「ALTER TABLE 表名ADD 新欄位名稱資料類型FIRST;」語句在開頭新增欄位;3、使用「ALTER TABLE 表名ADD 新欄位名稱資料類型[約束條件] AFTER 已經存在的欄位名稱;」語句在中間位置新增欄位。
