sql server 的模糊查詢的用法


 查詢所有姓張的同學
Select * from student where left(sName,1)=‘張‘   看上去很美,如果改成查詢名字中帶亮的學生怎么做?
換一種做法 like  
Select  * from student where sName like ‘張%’    會吧所有姓張的都查詢到,現在我想查詢姓張並且名字是一個字的學生?
Select  * from student where sName like ‘%亮%’
^只有MSSQL Server支持,其他DBMS用not like。
通配符 %多字符匹配的通配符,它匹配任意次數(零或多個)出現的任意字符
通配符_ 單字符匹配,它匹配單個出現的字符
[] 只匹配一個字符  並且這個字符必須是[]范圍內的    [0-9]  [a-z]
not與like一起使用:not like ….
要通配_、%、[、^這些字符怎么辦?[_]、[%]、[ [ ]、^(不需要放到中括號里,因為^只有放到中括號中才認為是通配符)
注意:like 'a%'與like'%a'的區別。  前者查詢首字符為a的,后者查詢末位為a的。

 

--通配符:_    、  %   、 []   、 ^

--  _  表示任意的單個字符

--姓張,兩個字的。

select * from MyStudent where fname like '張_'

--姓張,三個字的

select * from MyStudent where fname like '張__'

 

-- % 匹配任意多個任意字符

--無論姓名字數,只要第一個字符是'張'的就查詢出來

select * from MyStudent where fname like '張%'

select * from MyStudent where fname like '張%' and len(fname)=2

 

--  []  表示篩選,范圍。

--查詢出姓名中包含某些值的那些人

select * from TblStudent where tsname like '張[0-9]妹'

select * from TblStudent where tsname like '張_妹'

select * from TblStudent where tsname like '張[a-z]妹'

select * from TblStudent where tsname like '張[a-z0-9]妹'

select * from TblStudent where tsname like '張[^0-9]妹'

select * from TblStudent where tsname not like '張[0-9]妹'

update TblStudent set tsname=replace(tsname,'(女)','')

--通配符放到[]中就轉義了就不認為是通配符了。

--查詢出姓名中包含%的那些人

select * from TblStudent where tsname like '%[%]%'

--自己指定一個轉義符

--WHERE ColumnA LIKE '%5/%%' ESCAPE '/'

select * from TblStudent where tsname like '%/]%' ESCAPE '/'

select * from TblStudent where tsname like '%/[%'  ESCAPE '/'

select * from TblStudent where tsname like '%/[%/]%'  ESCAPE '/'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM