亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SQL數據操作基礎(中級)  9

2019-11-18 22:16:42
字體:
來源:轉載
供稿:網友
轉換數據

SQL Sever足夠強大,可以在需要的時候把大部分數值從一種類型轉換為另一種類型。例如,要比較SMALLINT型和INT型數據的大小,你不需要進行顯式的類型轉換。SQL Sever會為你完成這項工作。但是,當你想在字符型數據和其它類型的數據之間進行轉換時,你的確需要自己進行轉換操作。例如,假設你想從一個MONEY型字段中取出所有的值,并在結果后面加上字符串“US Dollars”。你需要使用函數CONVERT(),如下例所示:

SELECT CONVERT(CHAR(8),PRice)+’US Dollars’ FROM orders

函數CONVERT()帶有兩個變量。第一個變量指定了數據類型和長度。第二個變量指定了要進行轉換的字段。在這個例子中,字段price被轉換成長度為8個字符的CHAR型字段。字段price要被轉換成字符型,才可以在它后面連接上字符串’US Dollars’。

當向BIT型,DATETIME型,INT型,或者NUMERIC型字段添加字符串時,你需要進行同樣的轉換操作。例如,下面的語句在一個SELECT語句的查詢結果中加入字符串’The vote is’,該SELECT語句返回一個BIT型字段的值:

SELECT ‘The vote is’+CONVERT(CHAR(1),vote) FROM opinion

下面是這個語句的結果示例:

The vote is 1

The vote is 1

The vote is 0

(3 row(s) affected)

如果你不進行顯式的轉換,你會收到如下的錯誤信息:

Implicit conversion from datatype ‘varchar’ to ‘bit’ is not allowec.

Use the CONVERT function to run this query.

操作字符串數據

SQL Sever有許多函數和表達式,使你能對字符串進行有趣的操作,包括各種各樣的模式匹配和字符轉換。在這一節中,你將學習如何使用最重要的字符函數和表達式。

匹配通配符

假設你想建立一個與Yahoo功能相似的Internet目錄。你可以建立一個表用來保存一系列的站點名稱,統一資源定位器(URL),描述,和類別,并允許訪問者通過在HTML form中輸入關鍵字來檢索這些內容。

假如有一個訪問者想從這個目錄中得到其描述中包含關鍵字trading card的站點的列表。要取出正確的站點列表,你也許試圖使用這樣的查詢:

SELECT site_name FROM site_directory WHERE site_desc=’trading card’

這個查詢可以工作。但是,它只能返回那些其描述中只有trading card這個字符串的站點。例如,一個描述為We have the greatest collection of trading cards in the world!的站點不會被返回。

要把一個字符串與另一個字符串的一部分相匹配,你需要使用通配符。你使用通配符和關鍵字LIKE來實現模式匹配。下面的語句使用通配符和關鍵字LIKE重寫了上面的查詢,以返回所有正確站點的名字:

SELECT SITE_name FROM site_directory

WHERE site_desc LIKE ‘%trading cark%’

在這個例子中,所有其描述中包含表達式trading card的站點都被返回。描述為We have the greatest collection of trading cards in the world!的站點也被返回。當然,如果一個站點的描述中包含I am trading cardboard boxes online ,該站點的名字也被返回。

注意本例中百分號的使用。百分號是通配符的例子之一。它代表0個或多個字符。通過把trading card括在百分號中,所有其中嵌有字符串trading card的字符串都被匹配。

現在,假設你的站點目錄變得太大而不能在一頁中完全顯示。你決定把目錄分成兩部分。在第一頁,你想顯示所有首字母在A到M之間的站點。在第二頁,你想顯示所有首字母在N到Z之間的站點。要得到第一頁的站點列表,你可以使用如下的SQL語句:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[A-M]%’

在這個例子中使用了表達式[A-M],只取出那些首字母在A到M之間的站點。中括號([])用來匹配處在指定范圍內的單個字符。要得到第二頁中顯示的站點,應使用這個語句:

SELECT site_name FROM site_directory

WHERE site_name LIKE ‘[N-Z]%’

在這個例子中,括號中的表達式代表任何處在N到Z之間的單個字符。

假設你的站點目錄變得更大了,你現在需要把目錄分成更多頁。如果你想顯示那些以A,B或C開頭的站點,你可以用下面的查詢來實現:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[ABC]%’

在這個例子中,括號中的表達式不再指定一個范圍,而是給出了一些字符。任何一個其名字以這些字符中的任一個開頭的站點都將被返回。

通過在括號內的表達式中同時包含一個范圍和一些指定的字符,你可以把這兩種方法結合起來。例如,用下面的這個查詢,你可以取出那些首字母在C到F之間,或者以字母Y開頭的站點:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[C-FY]%’

在這個例子中,名字為Collegescape和Yahoo的站點會被選取,而名字為Magicw3的站點則不會被選取。

你也可以使用脫字符(^)來排除特定的字符。例如,要得到那些名字不以Y開頭的站點,你可以使用如下的查詢:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘[^Y]%’

對給定的字符或字符范圍均可以使用脫字符。

最后,通過使用下劃線字符(_),你可以匹配任何單個字符。例如,下面這個查詢返回每一個其名字的第二個字符為任何字母的站點:

SELECT site_name FROM site_directory WHERE site_name LIKE ‘M_crosoft’

這個例子既返回名為Microsoft的站點,也返回名為Macrosoft的站點。但是,名字為Moocrosoft的站點則不被返回。與通配符’%’不同,下劃線只代表單個字符。

注意:

如果你想匹配百分號或下劃線字符本身,你需要把它們括在方括號中。如果你想匹配連字符(-),應把它指定為方括號中的第一個字符。如果你想匹配方括號,應把它們也括在方括號中。例如,下面的語句返回所有其描述中包含百分號的站點:

SELECT site_name FROM site_directory WHERE site_desc LIKE ‘%[%]%’

匹配發音

Microsoft SQL 有兩個允許你按照發音來匹配字符串的函數。函數SOUNDEX()給一個字符串分配一個音標碼,函數DIFFERENCE()按照發音比較兩個字符串。當你不知道一個名字的確切拼寫,但多少知道一點它的發音時,使用這兩個函數將有助于你取出該記錄。

例如,如果你建立一個Internet目錄,你也許想增加一個選項,允許訪問者按照站點名的發音來搜索站點,而不是按名字的拼寫??紤]如下的語句:

SELECT site_name FROM site_directory

WHERE DIFFERENCE(site_name , ‘Microsoft’>3

這個語句使用函數DEFFERENCE()來取得其名字的發音與Microsoft非常相似的站點。函數DIFFERENCE()返回一個0到4之間的數字。如果該函數返回4,表示發音非常相近;如果該函數返回0,說明這兩個字符串的發音相差很大。

例如,上面的語句將返回站點名Microsoft和Macrosoft。這兩個名字的發音與Microsoft都很相似。如果你把上一語句中的大于3改為大于2,那么名為Zicrosoft和Megasoft的站點也將被返回。最后,如果你只需要差別等級大于1即可,則名為Picosoft和Minisoft的站點也將被匹配。

要深入了解函數DIFFERENCE()是如何工作的,你可以用函數SOUNDEX()來返回函數DIFFERENCE()所使用的音標碼。這里有一個例子:

SELECT site_name ‘site name’,SOUNDEX(site_name) ‘sounds like’

這個語句選取字段site_name的所有數據及其音標碼。下面是這個查詢的結果:

site name sounds like

……………………………………………………………….

Yahoo Y000

Mahoo M000

Microsoft M262

Macrosoft M262

Minisoft M521

Microshoft M262

Zicrosoft Z262

Zaposoft Z121

Millisoft M421

Nanosoft N521

Megasoft M221

Picosoft P221

(12 row(s) affected)

如果你仔細看一下音標碼,你會注意到音標碼的第一個字母與字段值的第一個字母相同。例如,Yahoo和Mahoo的音標碼只有第一個字母不同。你還可以發現Microsoft和Macrosoft的音標碼完全相同。

函數DIFFERENDE()比較兩個字符串的第一個字母和所有的輔音字母。該函數忽略任何元音字母(包括y),除非一個元音字母是一個字符串的第一個字母。

不幸的是,使用SOUNDEX()和DIFFERENCE()有一個欠缺。WHERE子句中包含這兩個函數的查詢執行起來效果不好。因此,你應該小心使用這兩個函數。

刪除空格

有兩個函數,TTRIM()和LTRIM(),可以用來從字符串中剪掉空格。函數LTRIM()去除應該字符串前面的所有空格;函數RTRIM()去除一個字符串尾部的所有空格。這里有一個任何使用函數RTRIM()的例子:

SELECT RTRIM(site_name) FROM site_directory

在這個例子中,如果任何一個站點的名字尾部有多余的空格,多余的空格將從查詢結果中刪去。

你可以嵌套使用這兩個函數,把一個字符串前后的空格同時刪去:

SELECT LTRIM(RTRIM(site_name) FROM site_directory

你會發現,在從CHAR型字段中剪掉多余的空格時,這兩個函數非常有用。記住,如果你把一個字符串保存在CHAR型字段中,該字符串會被追加多余的空格,以匹配該字段的長度。用這兩個函數,你可以去掉無用的空格,從而解決這個問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97婷婷涩涩精品一区| 色妞欧美日韩在线| 国产精品久久久久久久久久久久| 欧美成人激情在线| 国产福利视频一区| www.欧美精品一二三区| 欧美精品18videosex性欧美| 欧美极品少妇xxxxⅹ免费视频| 国产美女精彩久久| 欧美日韩免费观看中文| 欧美有码在线观看视频| 国产999精品久久久| 性欧美视频videos6一9| 色综合91久久精品中文字幕| 色在人av网站天堂精品| 久久久综合免费视频| 欧美激情奇米色| 亚洲色图第三页| 久久久亚洲福利精品午夜| 在线视频欧美日韩| 国产精品久久久久久久久久三级| 久久精品国产2020观看福利| 正在播放欧美视频| 性色av一区二区三区| 日韩国产一区三区| 中文字幕亚洲天堂| 精品久久久一区| 久久久中精品2020中文| 免费成人高清视频| 亚洲成色777777女色窝| 国产精品视频99| 中日韩美女免费视频网站在线观看| 国产成人aa精品一区在线播放| 欧美大片免费观看在线观看网站推荐| 成人av在线亚洲| 日韩美女免费观看| 亚洲第一av网站| 九九热在线精品视频| 久久影视免费观看| 亚洲自拍偷拍色图| 久久久999国产| 欧美日韩亚洲精品一区二区三区| 久久激情视频免费观看| 国产精品一区二区三区久久久| 亚洲成人av片在线观看| 亚洲精品电影久久久| 日韩高清电影免费观看完整版| 欧美一级片在线播放| 久久精品亚洲一区| 精品国产一区二区三区久久狼5月| 欧洲永久精品大片ww免费漫画| 欧美性受xxxx白人性爽| 亚洲一区二区久久| 成人精品久久av网站| 538国产精品一区二区免费视频| 色综合亚洲精品激情狠狠| 久久久久久久国产精品| 久久久成人的性感天堂| 国产精品丝袜久久久久久高清| 久久久国产一区二区三区| 97超级碰碰碰| 亚洲欧洲av一区二区| 国产精品第1页| 欧美一区二区三区艳史| 欧美有码在线观看视频| 国产精品流白浆视频| 5566日本婷婷色中文字幕97| 国产精品18久久久久久首页狼| www欧美日韩| 色综合男人天堂| 97视频在线观看免费| 欧美精品aaa| 国产亚洲一区二区在线| 亚洲成人久久电影| 欧美成aaa人片在线观看蜜臀| 亚洲欧美一区二区三区久久| 国产精品免费一区豆花| 国产精品久久久久久亚洲调教| 韩剧1988免费观看全集| 欧美日韩中文在线观看| 亚洲精品自产拍| 亚洲精品电影网| 欧美成人免费观看| 亚洲一区二区三区成人在线视频精品| 亚洲国产精品美女| 成人综合国产精品| 亚洲视频在线观看网站| 国产精品ⅴa在线观看h| 国产日韩精品电影| 91精品国产综合久久香蕉922| 久久久人成影片一区二区三区观看| 青青草原成人在线视频| 欧美精品激情blacked18| 热久久美女精品天天吊色| 91精品视频在线免费观看| 成人精品一区二区三区电影黑人| 亚洲图片欧洲图片av| 久久久久久九九九| 性视频1819p久久| 日韩欧美中文字幕在线播放| 中文精品99久久国产香蕉| 精品亚洲精品福利线在观看| 91探花福利精品国产自产在线| 亚洲成色777777在线观看影院| 亚洲欧洲午夜一线一品| 在线日韩第一页| 久久精品视频在线| 在线观看日韩www视频免费| 欧美成人午夜激情视频| 色伦专区97中文字幕| 亚洲四色影视在线观看| 成人黄色网免费| 日本久久久久久| 国产精品久久久久一区二区| 欧美一级电影在线| 欧美精品一区二区免费| 黄网站色欧美视频| 欧美丰满少妇xxxx| 亚洲毛片在线观看.| 欧美整片在线观看| 亚洲精品mp4| 午夜精品久久久久久久白皮肤| 亚洲free嫩bbb| 91av在线影院| 欧美人在线视频| 黑人巨大精品欧美一区免费视频| 日韩电影第一页| 伊人伊成久久人综合网小说| 欧美丝袜美女中出在线| 九九热这里只有精品6| 国产日韩欧美黄色| 成人福利网站在线观看11| 午夜剧场成人观在线视频免费观看| 亚洲一级黄色av| 色播久久人人爽人人爽人人片视av| 精品久久久香蕉免费精品视频| 国产97在线观看| 免费91麻豆精品国产自产在线观看| 黑人巨大精品欧美一区二区三区| 日韩美女在线播放| 亚洲精品国产成人| 成人网址在线观看| 777国产偷窥盗摄精品视频| 国产日韩视频在线观看| 国产一区深夜福利| 精品一区二区三区四区在线| 日韩精品有码在线观看| 久久精品国产v日韩v亚洲| 成人免费视频a| 亚洲毛茸茸少妇高潮呻吟| 亚洲成人教育av| 伊人久久综合97精品| 久久天天躁狠狠躁夜夜爽蜜月| 精品久久久一区| 亚洲专区在线视频| 国产成人精彩在线视频九色| 日本精品在线视频| 亚洲精品免费av| 欧美精品亚州精品| 国产亚洲精品va在线观看| 精品视频偷偷看在线观看| 国产精品中文久久久久久久| 456国产精品| 国产亚洲人成a一在线v站|