sql server 2008有關SQL的模糊查詢

2021-09-06 14:50:41 字數 1630 閱讀 2385

執行 資料庫查詢時,有完整查詢和模糊查詢之分。

一般模糊語句如下:

select 字段 from 表 where 某欄位 like 條件

其中關於條件,sql提供了四種匹配模式:

1,%:表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請運用兩個百分號(%%)表示。

比如 select * from [user] where u_name like '%三%'

將會把u_name為「張三」,「張貓三」、「三腳貓」,「唐三藏」等等有「三」的記錄全找出來。

另外,如果須要找出u_name中既有「三」又有「貓」的記錄,請運用 and條件

select * from [user] where u_name like '%三%' and u_name like '%貓%'

若運用 select * from [user] where u_name like '%三%貓%'

雖然能搜尋出「三腳貓」,但不能搜尋出符合條件的「張貓三」。

2,_: 表示任意單個字元。匹配單個任意字元,它常用來限定表示式的字元長度語句:

比如 select * from [user] where u_name like '_三_'

只找出「唐三藏」這樣u_name為三個字且中間乙個字是「三」的;

再比如 select * from [user] where u_name like '三__';

只找出「三腳貓」這樣name為三個字且第乙個字是「三」的;

3,[ ]:表示括號內所列字元中的乙個(類似正規表示式)。指定乙個字元、字串或範圍,要求所匹配物件為它們中的任乙個。

比如 select * from [user] where u_name like '[張李王]三'

將找出「張三」、「李三」、「王三」(而不是「張李王三」);

如 [ ] 內有一系列字元(01234、abcde之類的)則可略寫為「0-4」、「a-e」

select * from [user] where u_name like '老[1-9]'

將找出「老1」、「老2」、……、「老9」;

4,[^ ] :表示不在括號所列之內的單個字元。其取值和 相同,但它要求所匹配物件為指定字元以外的任乙個字元。

比如 select * from [user] where u_name like '[^張李王]三'

將找出不姓「張」、「李」、「王」的「趙三」、「孫三」等;

select * from [user] where u_name like '老[^1-4]';

將排除「老1」到「老4」,尋找「老5」、「老6」、……

5,查詢內容包含萬用字元時

由於萬用字元的緣故,導致我們查詢特殊字元「%」、「_」、「[」的語句不能正常實現,而把特殊字元用「[ ]」括起便可正常查詢。據此我們寫出以下函式:

function sqlencode(str)

str=replace(str,"[","[") '此句一定要在最前

str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function

在查詢前將待查字串先經該函式處理即可。

SQL Server 2008中有關XML的新功能

sql server 2008中有關xml的新功能 1 導言 microsoft 在microsoftsqlserver 2000中推出了與xml相關的功能以及transact sql 關鍵字for xml和openxml 這使得開發人員可以編寫transact sql 來獲取xml流形式的查詢結果...

Sql Server 2008 收縮日誌

收縮日誌 alter database dnname set recovery with no wait goalter database dnname set recovery 簡單模式 gouse dnname godbcc shrinkfile n dnname log 11,truncate...

徹底解除安裝sql server2008

微軟的開發工具在按裝和解除安裝時都讓人頭疼,只能是裝在c盤,裝在其他盤時最容易出事 在重新按裝的時候一定要把以前的例項解除安裝完才行。要不就會出錯。在解除安裝sql server後,其實還沒有完成,還要把登錄檔資訊完全刪乾淨,下面就將教您徹底刪除sql server登錄檔的方法,供您參考。在解除安裝...