一、sql server在存儲過程中實現模糊查詢的方法
1、Wildcard操作符
Wildcard操作符:Wildcard是SQL Server支持的最基本的模糊查詢操作符,可以使用LIKE和=操作符實現模糊查詢。
使用LIKE操作符實現以“SMIT”為開頭的姓名查詢語句:
SELECT * FROM Customers WHERE LastName LIKE 'SMIT%'
使用=操作符實現精確匹配查詢語句:
SELECT * FROM Customers WHERE LastName = 'Smith'
2、between
把某一字段的值在特定范圍內的記錄查詢出來:
select * from ScoreListwhere csharp between 80 and 90 --在ScoreList數據庫中查詢csharp成績在80~90之間的,列出全部列select StudentName, StudentAdress from Studentswhere Birthday between '1972-7-7' and '2022-7-7' --在Students數據庫中查詢Birthday在1972-7-7到 2022-7-7之間的,列出全部列兩項
3、in
把某一字段中內容與所列出的查詢內容列表匹配的記錄查詢出來:
select StudentName, StudentAdress, Age from Studentswhere Age in (21,22,23) --在Students數據庫中查詢Age是21,22,23歲的,并列出StudentName和StudentAdress,Age 三項select StudentName, StudentAdress from Studentswhere StudentAdress in ('Eric','Tom','Jack') --在Students數據庫中查詢StudentName是Eric,Tom,Jack,并列出StudentName和StudentAdress兩項
4、全文搜索
SQL Server提供了全文檢索功能,可以使用CONTAINS函數進行模糊查詢。
搜索郵件正文中包含“find me”文本的郵件:
SELECT * FROM Email WHERE CONTAINS(Body, 'find me')
5、使用存儲過程
可以使用存儲過程實現模糊查詢,并通過參數傳遞查詢條件。
創建一個存儲過程SP_FuzzySearch,根據輸入的姓名(@Name)進行模糊查詢:
CREATE PROCEDURE dbo.SP_FuzzySearch (@Name VARCHAR(50))ASBEGINSELECT *FROM CustomerWHERE Lastname LIKE '%' + @Name + '%'END
然后執行存儲過程:
EXECUTE dbo.SP_FuzzySearch 'Smith'
二、SQL的模糊查詢通配符
1、%
表示任意0個或多個字符。一般在匹配字符串的前后都會加上%。舉例:匹配含有 “數據” 的字符串,可以用,WHERE FieldName LIKE ‘%數據%’。如果是匹配首(尾)含某個字符串的值,則用 數據%(%數據)。
2、_
表示 單個 任意字符。當我們需要限制匹配的字符串的長度時,可以用 _ 替代。舉例:當需要匹配“北”開頭的兩個字符的對象時,可以用“北_”。
3、[]
羅列待匹配的單個字符。當知道要匹配的對象的范圍時,我們可以用 [] 羅列這些字符。舉例:當語句寫為:'[冬西南]瓜’,匹配的是 “冬瓜”,“西瓜”,“南瓜”字符串。'[0-4]’ 匹配的是 0,1,2,3,4。'[a-d]’ 匹配的是 a,b,c,d。對于通配符的匹配,需要在外層用 [] 括起來。
4、[^ ] 或者 [! ]
不含所羅列字符的單個字符(兩種寫法)。與第3點相反,用哪種匹配方式取決于匹配的集合哪個更小。如果匹配字符的集合小,就用 [],如果匹配的集合大,遠大于不包含集合,則用 [^ ]。舉例:語句 [^冬西南]瓜,匹配的是:甜瓜、香瓜、壞瓜、傻瓜…… 這類不含 [冬西南] 的字符。
三、sql語言的特點
1、SQL風格統一
SQL可以獨立完成數據庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立數據庫、查詢、更新、維護、數據庫重構、數據庫安全性控制等一系列操作,這就為數據庫應用系統開發提供了良好的環境,在數據庫投入運行后,還可根據需要隨時逐步修改模式,且不影響數據庫的運行,從而使系統具有良好的可擴充性。
2、高度非過程化
非關系數據模型的數據操縱語言是面向過程的語言,用其完成用戶請求時,必須指定存取路徑。而用SQL進行數據操作,用戶只需提出“做什么”,而不必指明“怎么做”,因此用戶無須了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不但大大減輕了用戶負擔,而且有利于提高數據獨立性。
3、面向集合的操作方式
SQL采用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。
4、以同一種語法結構提供兩種使用方式
SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用于聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對數據庫進行操作。作為嵌入式語言,SQL語句能夠嵌入到高級語言(如C、C#、JAVA)程序中,供程序員設計程序時使用。而在兩種不同的使用方式下,SQL的語法結構基本上是一致的。這種以統一的語法結構提供兩種不同的操作方式,為用戶提供了極大的靈活性與方便性。
5、語言簡潔,易學易用
SQL功能極強,但由于設計巧妙,語言十分簡潔,完成數據定義、數據操縱、數據控制的核心功能只用了9個動詞:CREATE、ALTER、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。且SQL語言語法簡單,接近英語口語,因此容易學習,也容易使用。
延伸閱讀1:結構化查詢語言
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。