NET開發-在SQL Server資料庫中,使用like結合通配符實現模糊查詢

2020-12-08 一都編程

1.概述

在企業的.NET信息系統中,匹配查詢和模糊查詢使用頻率是非常高的,像百度搜索使用的就是模糊查詢,只要輸入任意1個關鍵字,就可以查詢出來所有與該關鍵字相關的信息。

模糊查詢

例如,查詢姓名為李小強的數據,則要使用姓名=李小強進行查詢,這是相等查詢。

什麼是模糊查詢呢?模糊是指只匹配某一個字符或多個字符,然後中間或兩邊為任意字符,這就是模糊查詢,如查詢姓李的學生,則就是模糊查詢。與之匹配的有李小強、李大強、李小花、李一鳴等。

2.使用模糊查詢

在SQL Server中,模糊查詢要使用like在Where條件中進行查詢。在搜索資料庫中的數據時,SQL通配符可以替代一個或多個字符。SQL通配符必須與 LIKE運算符一起使用,LIKE是關鍵字。

SQL通配符有:%、_、[]和[^]。這3個通配符非常重要,一定要清楚每個通配符的代表的具體含義。

2.1. %通配符的使用

在SQL Server中,%通配符在SQL語句中表示任意的0或多個字符。

基本語法如下:

select * fr om 表名 where 欄位名 like '%值%'

注意,在此SQL語句中,like關鍵字後面是帶有單引號的匹配模式,其中包含了2個%通配符,表示在「值」左邊和右邊可以是任意的0個或多個字符。

例如:查詢出BW_Student表中姓名中包含「一」的所有學生。

注意:當提到「包含」這2個字時,就表示模糊查詢。

如下SQL語句:

SELECT TOP 1000 [Id],[Name],[Age],[Sex]FR OM [BW_TestDB].[dbo].[BW_Student]WHERE Name LIKE '%一%'

使用了』%一%』表示在一左邊和右邊可以有任意的0個或多個字符,都可以與之匹配。

運行結果如下:

like+%模糊查詢

在這裡使用了:WHERE Name LIKE 『%一%』來實現模糊查詢,LIKE左邊是要進行模糊查詢的欄位名,右邊是使用單引號括起來的模糊查詢的表達式。

%通配符使用的最多,表示任意的0個或多個字符,邊界值限制比較少,因此,廣受.NET開發者喜歡。

2.2. _通配符的使用

在SQL Server中,_在SQL語句中表示任意的1個字符。

基本語法如下:

select * fr om 表名 where 欄位名 like '_值_'

例如:查詢出BW_Student表中所有年齡為20-29(包含20和29)的學生。如下SQL語句:

SELECT * FR OM BW_Student WHERE Age LIKE '2_'

運行結果如下:

like+_模糊查詢

由於_可以表示任意的單個字符,所以』2_』表示所有以2開頭且第2個字符為任意字符的字符串都符合要求。總體是匹配的是2個字符組成的字符串。

2.3. []通配符的使用

在SQL Server中,對於[]有兩種使用方法:

1) []表示指定範圍內。

2) [^]表示不在指定的範圍內。

[]只匹配一個字符,並且這個字符必須是[]範圍內的。

如:[0-9]表示匹配0-9之間的任意一個數字,[a-z]表示匹配a-z之間的任意字母。

例如:查詢出年齡為20、21、22、23的學生

select * fr om BW_Student where Age like '2[0,1,2,3]'

select * fr om BW_Student where Age like '2[0-3]'

運行一下結果:

[]通配符
[^]通配符

在圖3和圖4中,分別使用了[]和[^]通配符來模糊查詢Age列的值。運行後將匹配的結果顯示出來。

2.4. 排序函數Row_Number()的使用

在SQL Server中,使用Row_Number()函數可以在查詢的結果中,為每行數據添加一個行號,這個行號從1開始,常用於序號、排名等。

基本語法如下:

select ROW_NUMBER() over(order by 欄位名desc/asc ) 別名,欄位名1,欄位名2,欄位名n fr om 表名

例如:在BW_Student表中對年齡從大到小排列,並給出一個名次。SQL語句如下:

SELECT ROW_NUMBER() OVER(order by Age desc) 名次,* FR OM BW_Student

運行一下結果:

按序號排列

在圖5中,查詢的結果中多了一個「名次」列,該列就是一個名次列,是一個序號,注意,這個序號是臨時的,並不真實存在資料庫中。

在.NET應用程式的後臺管理系統中,模糊查詢是少不了的,這些通配符也是經常使用的,有的時候還會在C#業務邏輯中處理後,再通過ADO.NET技術發送給用戶,這樣用戶得的結果更精準。

相關焦點

  • NET開發-在SQL Server資料庫中使用SQL語句實現多表之間嵌套查詢...
    .NET開發-SQL Server資料庫1.概述在開發.NET應用程式的時候,有時候會用到多張表的數據,此時就需要多表之間的查詢,在SQLServer中,多表之間的查詢需要連接在一起,然後再使用嵌套,將多個SQL語句嵌套起來,實現複雜的嵌套查詢。
  • SQL Server資料庫基礎知識第四講:數據查詢(理論部分)
    SQL Server資料庫基礎知識:數據查詢我們前面學習了資料庫、數據表、數據的操作,那麼這一部分,將學習資料庫中最為重要的數據查詢。,如使用「=」來進行的查詢後面一定是精確的值,而使用like後面就可以是模糊的值。
  • 資料庫sql 學習
    sql 用於訪問和處理資料庫的標準計算機語言rdbms 關係型資料庫管理系統ANSI 美國國家標準化組織
  • Java使用jdbc連接SQLServer資料庫完成多條件模糊查詢
    引言最近想在網上找些使用jdbc連接操作SQLserver的完成模糊查詢或者多條件Java代碼,
  • SQL 注入攻防入門詳解
    b)   參數化查詢原理:在使用參數化查詢的情況下,資料庫伺服器不會將參數的內容視為SQL指令的一部份來處理,而是在資料庫完成 SQL 指令的編譯後,才套用參數運行,因此就算參數中含有具有損的指令,也不會被資料庫所運行。c)   所以在實際開發中,入口處的安全檢查是必要的,參數化查詢應作為最後一道安全防線。
  • 【資料庫】MySQL進階六、模糊查詢用法
    【資料庫】MySQL進階六、模糊查詢用法javahelpmysql中模糊查詢的四種用法介紹這篇文章主要介紹了
  • MyBatis系列:模糊查詢的4種實現方式
    1、根據姓名模糊查詢員工信息1.1、方式一步驟一:編寫配置文件步驟二:測試1.2、方式二說明: 使用方式一可以實現模糊查詢,但是有一點不方便的地方就是:在測試類中,調用selectList()方法傳參時需要調用者手動的添加%號通配符,顯然是麻煩的,能否在映射配置文件中直接將%號寫好呢?
  • NET開發-SQL語句在SQL Server中查詢全部列、指定列和前n條數據
    .NET開發-SQL Server1.概述對於存儲在資料庫中的數據,根據實際需求查詢出來有用的數據一直都是.NET應用程式常用的功能,在SQLServer中,可以使用標準的SQL語句實現各種各樣的查詢。
  • Python操作Mysql資料庫進階篇——查詢操作詳解(一)
    前面我們已經介紹了在Python3.x中如何連接一個Mysql資料庫,以及怎麼樣對這個資料庫創建一個表,增刪改查表裡的數據。想必大家對Mysql資料庫和簡單的sql語句有了一定的了解,其實sql語句博大精深,裡面的知識點非常的多,估計介紹一個星期也難以介紹全面。今天我們就來通過Mysql這種普遍使用的關係型資料庫來深入了解一下sql語句中比較高級的查詢部分。
  • 了解資料庫類型及MySQL資料庫常用命令行
    2、資料庫的分類(1) 關係型資料庫(sql資料庫):中型:mysql(埠號3306)、sql server大型:Oracle(埠號1521)(2) 非關係型資料庫(no-sql資料庫)1、查詢表中所有的數據select * from 表名;2、條件查詢select * from 表名 where 條件;3、查詢部分列的數據select
  • 用Select×進行SQL查詢的七宗罪
    【51CTO.com快譯】如今,網上許多文章都已明確地指出:使用「SELECT * 」作為SQL查詢方式是一種極其危險的代碼書寫習慣。開發人員應該儘量在自己的程序中避免出現此類查詢,取而代之的應該是明確地指定要查詢的列名。不過,大家可能只是「知其然,而不知其所以然」。
  • SQL 資料庫語句
    當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重複行。C:INTERSECT 運算符INTERSECT運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重複行而派生出一個結果表。當 ALL隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重複行。 註:使用運算詞的幾個查詢結果行必須是一致的。
  • SQL Server 2014
    軟體介紹:SQL語言,是結構化查詢語言(Structured Query Language)的簡稱。SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時也是資料庫腳本文件的擴展名。
  • Access中查詢SQL資料庫中文字符的問題處理
    用access連結sql server中的表,建立選擇查詢時,無法查找中文數據,在這裡採用了傳遞查詢來解決這個問題。
  • SQL Server 安裝步驟
    軟體簡介        SQL語言,是結構化查詢語言(Structured Query Language)的簡稱。SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時也是資料庫腳本文件的擴展名。
  • Spring如何使用4行代碼優雅的實現模糊查詢,精確查詢功能
    最近開始使用Spring開發新項目了,開發新項目必定少不了折騰增刪查改。 其中模糊查詢,精確查詢,分頁查詢也算是不好對付的功能,需要手寫大量重複的代碼來實現相關的功能,如何優雅的實現查詢功能呢? 首先上兩張截圖。
  • 「MySQL系列」分析Sql執行時間及查詢執行計劃(附資料庫和一千萬數據)
    我們幹開發面試工作的時候,發現對資料庫的面試比重很大。說明對資料庫的知識掌握對我們程式設計師越來越重要了。接下來這篇文章我們來看看如何分析我們的sql執行效率。首先找到執行慢的sql,然後對執行慢的SQL進行分析。
  • SQL 操作符&通配符(LIKE\IN\BETWEEN)
    提示:「%」是通配符,可替代一個或多個字符,從上例可知,只要滿足第一個字符是「李」就會查詢出來。例子4找姓名中沒有「安」字的學生SELECT * FROM Studentswhere Sname not like
  • 常用的sql語句集合(適合資料庫初級人員)
    2、刪除資料庫drop database dbname3、備份sql server--- 創建備份數據的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack
  • NET開發-在SQL Server中使用where語句根據多種條件查詢數據
    .NET開發-SQL Server資料庫1.對於使用.NET開發的應用程式,也是一樣的,都會給用戶留有搜索功能,根據輸入的關鍵字通過C#+ADO.NET技術在SQL Server資料庫中搜索內容,當搜索到內容後再通過ADO.NET技術將結果返回給用戶,此時用戶就能看到自己想要的內容了。2.