第7章t語言函數(shù)語句new_第1頁
第7章t語言函數(shù)語句new_第2頁
第7章t語言函數(shù)語句new_第3頁
第7章t語言函數(shù)語句new_第4頁
第7章t語言函數(shù)語句new_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、SQL Server2005第第7章章 Transact_SQL語言語言SQL Server20057.1 T-SQL7.1 T-SQL概述概述7.1.1 SQL Server中的運算符中的運算符 運算符就是進(jìn)行運算的符號。運算符就是進(jìn)行運算的符號。SQL Server支持的支持的運算符如表運算符如表7.1所示。所示。 一般來說,可以在允許使用表達(dá)式的場合用運算一般來說,可以在允許使用表達(dá)式的場合用運算符將常量、變量、對象等連接起來,形成新的表符將常量、變量、對象等連接起來,形成新的表達(dá)式。表達(dá)式。表7.2給出了運算符的優(yōu)先級順序。給出了運算符的優(yōu)先級順序。表7.1 T-SQL中的運算符運算符

2、運算符說明說明+加加-減減*乘乘/除除%取余取余=賦值賦值大于大于=大于等于大于等于表表7.1 T-SQL中的運算符中的運算符運算符運算符說明說明不大于不大于!,=,!= srSQL Server20057.2 7.2 常用運算符常用運算符 運算符是一種符號,用來指定要在一個或多個表運算符是一種符號,用來指定要在一個或多個表達(dá)式中執(zhí)行的操作。達(dá)式中執(zhí)行的操作。SQL Server常用的運算符有:常用的運算符有: 算術(shù)運算符算術(shù)運算符 賦值運算符賦值運算符 比較運算符比較運算符 邏輯運算符邏輯運算符 字符串串聯(lián)運算符字符串串聯(lián)運算符SQL Server20057.2.1 7.2.1 算數(shù)運算符算

3、數(shù)運算符 算術(shù)運算符包括:加(算術(shù)運算符包括:加(+)、減()、減(-)、乘)、乘(*)、除()、除(/)、取模()、取模(%)。)。 例例7.4 利用利用Product表計算每種商品的總價表計算每種商品的總價值值SELECT Price*stocks AS 商品總價值商品總價值FROM ProductSQL Server20057.2.2 7.2.2 賦值運算符號賦值運算符號 賦值運算符等號為(賦值運算符等號為(=)。)。 例例7.5 利用賦值運算符為表中的列設(shè)置標(biāo)利用賦值運算符為表中的列設(shè)置標(biāo)題。題。SELECT 客戶編號客戶編號=CustomerID,所在公司所在公司=CompanyNa

4、meFROM CustomerSQL Server20057.2.3 7.2.3 字符串串聯(lián)運算符字符串串聯(lián)運算符 字符串串聯(lián)運算符為(字符串串聯(lián)運算符為(+),允許通過加號),允許通過加號在多個字符串間進(jìn)行字符串串聯(lián)操作。在多個字符串間進(jìn)行字符串串聯(lián)操作。 例例7.6 使用串聯(lián)運算符進(jìn)行操作。使用串聯(lián)運算符進(jìn)行操作。DECLARE myvar char(20)SET myvar=SQL+SERVER+2000SELECT myvar AS 運算結(jié)果為:運算結(jié)果為:SQL Server2005 例例7.7 使用邏輯運算符查詢滿足條件的記錄。使用邏輯運算符查詢滿足條件的記錄。DECLARE my

5、var1 char(6),myvar2 intSELECT myvar1=p0100%, myvar2=1SELECT * FROM ProductWHERE ProductID like myvar1 AND CategoryID=myvar2 SQL Server20057.3 函數(shù)( (1) 1) 字符串函數(shù)字符串函數(shù)ASCII(char_exp)ASCII(char_exp):返回字符的返回字符的ASCIIASCII碼碼。例如,例如,select ASCII(select ASCII(a a) ) 返回返回9797。CHAR(int_exp)CHAR(int_exp):返回整數(shù)表達(dá)式返

6、回整數(shù)表達(dá)式int_expint_exp作為作為ASCIIASCII碼所代表的字符,碼所代表的字符,例如,例如, select CHAR(65) select CHAR(65) 返回返回字符字符 AA。CHARINDEX(exp1,exp2)CHARINDEX(exp1,exp2):在在exp2exp2中查找中查找exp1exp1出現(xiàn)出現(xiàn)的位置。例如的位置。例如: :select CHARINDEX(select CHARINDEX(serser, ,SQL serverSQL server) ) 返回返回5 5SQL Server2005LEFT(char_exp,int_exp)LEFT(

7、char_exp,int_exp):返回字符串返回字符串char_expchar_exp最左端的最左端的int_expint_exp個字符。個字符。例如,例如,select LEFT(CHINA,3) select LEFT(CHINA,3) 返回返回 CHICHI。RIGHT(char_exp,int_exp)RIGHT(char_exp,int_exp):返回字符表達(dá)式返回字符表達(dá)式char_expchar_exp最右端的最右端的int_expint_exp個字符。個字符。例如,例如, select RIGHT(CHINA,3) select RIGHT(CHINA,3) 返回返回 INA

8、INASPACE ( int_exp)SPACE ( int_exp):返回返回int_expint_exp個空格。個空格。例如,例如, select SPACE(3) select SPACE(3) 返回返回3 3個空格。個空格。SQL Server2005 REPLACE(exp1,exp2,exp3)REPLACE(exp1,exp2,exp3)將將exp1exp1中所有出現(xiàn)中所有出現(xiàn)exp2exp2的地方均用的地方均用exp3exp3替換。替換。例例 select REPLACE(xyzabcxyab,xy,rst)select REPLACE(xyzabcxyab,xy,rst)返回

9、返回 rstzabcrstabrstzabcrstab REPLICATE(char_exp,int_exp)REPLICATE(char_exp,int_exp):將字符表達(dá)式將字符表達(dá)式char_exp char_exp 重復(fù)重復(fù) int_expint_exp次。例如次。例如: : select REPLICATE(XYZ,3) select REPLICATE(XYZ,3) 返回返回 XYZXYZXYZXYZXYZXYZ。 REVERSE (char_exp)REVERSE (char_exp):按反序顯示按反序顯示char_expchar_exp。例例 select REVERSE (

10、xyzabc) select REVERSE (xyzabc) 返回返回 cbazyxcbazyx。SQL Server2005LEN(str_exp)LEN(str_exp):返回返回str_expstr_exp中字符的個數(shù)。中字符的個數(shù)。例如,例如, select LEN(abcde) LEN(abcde) 返回返回5 5。UPPER (char_exp)UPPER (char_exp):返回將返回將char_expchar_exp中所有小寫字中所有小寫字母轉(zhuǎn)成大寫之后的字符串。母轉(zhuǎn)成大寫之后的字符串。例如,例如,select UPPER (aBcD1234) UPPER (aBcD123

11、4) 返回返回 ABCD1234ABCD1234LOWER(char_exp)LOWER(char_exp):返回將返回將char_expchar_exp中所有大寫字母中所有大寫字母轉(zhuǎn)成小寫之后的字符串。轉(zhuǎn)成小寫之后的字符串。例如,例如, select LOWER(aBcD1234) LOWER(aBcD1234) 返回返回 abcd1234abcd1234SQL Server2005 STUFF(exp1,start,length, exp2)STUFF(exp1,start,length, exp2): 將將exp1exp1中中從從startstart開始的連續(xù)開始的連續(xù)lengthlen

12、gth個字符替換成個字符替換成exp2exp2。例:例: select STUFF(xyzrst,2,4 ,abc)select STUFF(xyzrst,2,4 ,abc)返回返回 xabctxabct SUBSTRING(exp,start,length)SUBSTRING(exp,start,length):返回返回expexp中從中從startstart開始連續(xù)開始連續(xù)lengthlength個字符。個字符。例如,例如, select SUBSTRING (xyzrst,2,4) select SUBSTRING (xyzrst,2,4) 返回返回 yzrsyzrsSQL Server

13、2005( (2) 2) 日期和時間函數(shù)日期和時間函數(shù) DATEADD(datepart,number,date)DATEADD(datepart,number,date):將將date日期日期中的中的datepart部分加上部分加上number,返回新的日期。返回新的日期。例例: select select DATEADD (day,3,6/24/2003 10:26:45)返回返回Jun 27 2003 10:26:45 。 DATEDIFF( datepart, startdate, enddate )DATEDIFF( datepart, startdate, enddate ):以以

14、datepart為單位返回為單位返回startdate和和enddate的間隔。的間隔。例:例:select select DATEDIFF (year,6/23/2001 10:26:45, 6/24/2003 10:26:45)返回返回2。SQL Server2005 DAY ( date )DAY ( date ):返回返回date日期中的日期中的“日日”部分值,部分值,該函數(shù)與該函數(shù)與DATEPART(day,date)是等價的。是等價的。例如,例如, select DAY( 6/24/2003 10:26:45 )返回返回24。 MONTH ( date )MONTH ( date

15、):返回返回date日期中的日期中的“月月”部分部分值。值。 YEAR (date )YEAR (date ):返回返回date日期中的日期中的“年年”部分值。部分值。 GETDATE ( )GETDATE ( ):返回系統(tǒng)的當(dāng)前日期和時間。返回系統(tǒng)的當(dāng)前日期和時間。SQL Server2005 ( (3) 3) 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) ABS (numeric_expression ) ABS (numeric_expression ) :返回絕對值。返回絕對值。例如,例如, select select ABS(-21)返回返回21。 CEILING (numeric_expression )CE

16、ILING (numeric_expression ):返回大于等返回大于等于給定數(shù)據(jù)的最小整數(shù)。于給定數(shù)據(jù)的最小整數(shù)。例如,例如, select select CEILING(13.5)返回返回14。 FLOOR (numeric_expression )FLOOR (numeric_expression ) :返回小于等于返回小于等于給定數(shù)據(jù)的最大整數(shù)。給定數(shù)據(jù)的最大整數(shù)。例如,例如, select select FLOOR (13.5)返回返回13。SQL Server2005 ROUND (numeric_expression,length )ROUND (numeric_expres

17、sion,length ):按四舍按四舍五入返回給定數(shù)據(jù)的近似值。五入返回給定數(shù)據(jù)的近似值。例如,例如, select ROUND(156.45678,3) select ROUND(156.45678,3) 返回返回156.457156.457。 POWER(numeric_expression,y )POWER(numeric_expression,y ):返回給定數(shù)據(jù)返回給定數(shù)據(jù)的冪方值。的冪方值。例如,例如, select POWER(2.50,2) select POWER(2.50,2) 返回返回6.256.25。 RAND ( seed )RAND ( seed ) :返回一個介

18、于返回一個介于0 0和和1 1之間的之間的隨機數(shù)。其中任選項隨機數(shù)。其中任選項seedseed是個整數(shù)。是個整數(shù)。SQL Server20057.4 7.4 控制語句控制語句1. BEGIN-END將多個將多個T-SQL語句組合為一個程序塊,相當(dāng)于許多高語句組合為一個程序塊,相當(dāng)于許多高級語言中的級語言中的 。BEGINENDSQL Server20052. 2. IF-ELSEIF-ELSE語句語句IF ELSE其中條件表達(dá)式的值必須是邏輯值,其中條件表達(dá)式的值必須是邏輯值,ELSE子句是可子句是可選的。選的。其中其中可以是單條語句或程序塊??梢允菃螚l語句或程序塊。 SQL Server20

19、05declare x int,y int,z intselect x=1,y=2,z=3if xy print xyelse if yz print yz else print z=y運行結(jié)果是:運行結(jié)果是: z=ySQL Server20053. 3. CASECASE表達(dá)式表達(dá)式CASE表達(dá)式可以用在任何表達(dá)式可以用在任何允許使用允許使用表達(dá)式的地方。表達(dá)式的地方。CASE表達(dá)式表達(dá)式不能單獨執(zhí)行不能單獨執(zhí)行,只能作為語句的一部分。,只能作為語句的一部分。(1) 簡單簡單CASE表達(dá)式表達(dá)式 CASE WHEN THEN WHEN THEN ELSE ENDSQL Server2005例

20、例7.8 調(diào)整員工工資調(diào)整員工工資 e_wage : 崗位級別崗位級別 job_level 為為1的,工資上調(diào)的,工資上調(diào)8%, 崗位級別為崗位級別為2的,工資上調(diào)的,工資上調(diào)7%, 崗位級別為崗位級別為3的,工資上調(diào)的,工資上調(diào)6%, 其他的,工資上調(diào)其他的,工資上調(diào)5% declare e_wage int,job_level intselect job_level=1,e_wage=1000set e_wage =Case job_levelwhen 1 then e_wage*1.08when 2 then e_wage*1.07when 3 then e_wage*1.06else

21、e_wage*1.05endselect e_wageSQL Server2005(2) 搜索搜索CASE表達(dá)式:表達(dá)式:CASEWHEN THEN WHEN THEN ELSE ENDSQL Server2005declare e_wage int,job_level intselect job_level=1,e_wage=1000set e_wage =casewhen job_level = 1 then e_wage*1.08when job_level = 2 then e_wage*1.07when job_level = 3 then e_wage*1.06else e_wag

22、e*1.05endprint e_wage例例7.9 用第二種格式完成上例用第二種格式完成上例SQL Server20054. WHILE語句直到條件不成立時退出循環(huán)直到條件不成立時退出循環(huán)WHILE BEGIN BREAK CONTINUE ENDSQL Server2005 其中的其中的如果由如果由多個多個T-SQL語句組成,則需語句組成,則需用用BEGIN和和END括起來。括起來。 通常情況下,通常情況下,CONTINUE和和BREAK是放在是放在IF-ELSE命令中的,即在滿足某個條件時提前結(jié)束命令中的,即在滿足某個條件時提前結(jié)束本次循環(huán)或退出本層循環(huán)。本次循環(huán)或退出本層循環(huán)。 BREAK命令命令: 讓程序跳出包含它的最內(nèi)層循環(huán)。讓程序跳出包含它的最內(nèi)層循環(huán)。 CONTINUE命令命令: 讓程序跳過讓程序跳過CONTINUE之后之后的語句回到的語句回到WHILE 循環(huán)的第一行命令。循環(huán)的第一行命令。 WHILE語句可以嵌套。語句可以嵌套。DECLARE i intSET i=1WHILE i=5 BEGIN- if i=3 break/* if i=3 begin SET i=i+1 continue end */ PRINT i SET i=i+1 END DECLARE i int, t intSET i=150WHIL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論