首頁 資料庫 mysql教程 談談SQL查詢欄位被包含語句問題

談談SQL查詢欄位被包含語句問題

Aug 11, 2017 pm 03:08 PM
包含 欄位 語句

說到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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
jQuery引入必須的包是什麼? jQuery引入必須的包是什麼? Feb 23, 2024 pm 12:00 PM

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

Java中的NoSuchFieldError-找不到欄位的解決方法 Java中的NoSuchFieldError-找不到欄位的解決方法 Jun 25, 2023 am 11:33 AM

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

如何使用 JavaScript 判斷字串是否包含特定字元? 如何使用 JavaScript 判斷字串是否包含特定字元? Oct 21, 2023 am 08:23 AM

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

PHP中如何判斷欄位是否為空? PHP中如何判斷欄位是否為空? Mar 20, 2024 pm 03:09 PM

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

PHP8.0中的multi-catch語句 PHP8.0中的multi-catch語句 May 14, 2023 pm 01:51 PM

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

mysql字段是什麼意思 mysql字段是什麼意思 Jul 10, 2023 pm 02:14 PM

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

如何實作MySQL中插入資料的語句? 如何實作MySQL中插入資料的語句? Nov 08, 2023 am 11:48 AM

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

資料庫怎麼增加表中字段 資料庫怎麼增加表中字段 Mar 18, 2021 pm 02:13 PM

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

See all articles