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

首頁 > 數據庫 > SQL Server > 正文

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

2019-11-03 08:38:05
字體:
來源:轉載
供稿:網友
轉換數據

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
日韩免费在线电影| 疯狂做受xxxx高潮欧美日本| 亚洲va久久久噜噜噜久久天堂| 久久精品国产96久久久香蕉| 一区二区三区四区精品| 国产美女主播一区| 欧美国产日产韩国视频| 亚洲免费av网址| 亚洲va久久久噜噜噜| 亚洲电影天堂av| 日韩精品中文字幕久久臀| 91国内揄拍国内精品对白| 亚洲午夜性刺激影院| 欧美黄色片在线观看| 少妇高潮 亚洲精品| 亚洲精品久久在线| 久久久精品网站| 亚洲老司机av| 欧美大片大片在线播放| 91精品国产沙发| 国模精品视频一区二区| 国产97免费视| 欧美性猛交99久久久久99按摩| 国产精品高潮呻吟久久av无限| 亚洲精品自拍第一页| 国产精品夫妻激情| 91视频88av| 精品无码久久久久久国产| 久久久国产精品一区| 国产在线播放不卡| 亚洲精品国产拍免费91在线| 成人免费在线网址| 日本欧美黄网站| 精品国产欧美一区二区三区成人| 欧美视频13p| 91免费精品视频| 日韩成人av在线| 亚洲欧洲日产国码av系列天堂| 欧美电影免费观看电视剧大全| 日韩av在线看| 日韩电影在线观看免费| 欧美激情高清视频| 欧美最猛性xxxxx免费| 欧美性猛交99久久久久99按摩| 日韩在线视频导航| 亚洲精品按摩视频| 欧美做爰性生交视频| 精品久久久久久久久久久久久| 亚洲成人动漫在线播放| 国产伦精品免费视频| 中文字幕av一区二区三区谷原希美| 欧美激情久久久久| 成人午夜激情网| 国产91精品最新在线播放| 国产成人精品在线视频| 欧美高清视频一区二区| 91精品国产91| 亚洲情综合五月天| 性欧美长视频免费观看不卡| 国产精品日韩专区| 久久91超碰青草是什么| 51久久精品夜色国产麻豆| 日韩av中文字幕在线| 国产91露脸中文字幕在线| 亚洲一区二区免费| 国内偷自视频区视频综合| 欧美久久精品午夜青青大伊人| 成人网址在线观看| 97av在线播放| 亚洲人成人99网站| 亚洲精品网址在线观看| 91免费人成网站在线观看18| 亚洲网站在线观看| 国产丝袜一区二区| 亚洲sss综合天堂久久| 亚洲免费视频在线观看| 国产成人精品视频在线| 日韩av片电影专区| 国产精品aaaa| 日韩成人在线网站| 国产亚洲欧洲在线| 亚洲欧美另类人妖| 成人国产精品一区二区| 国产一区二区三区高清在线观看| 久久午夜a级毛片| 亚洲欧美综合另类中字| 欧美色视频日本版| 午夜精品一区二区三区在线视| 亚洲国产精品99| www.欧美免费| 庆余年2免费日韩剧观看大牛| 久久久www成人免费精品张筱雨| 精品亚洲一区二区三区在线观看| 国产欧美 在线欧美| 色樱桃影院亚洲精品影院| 欧洲永久精品大片ww免费漫画| 久久综合免费视频影院| 亚洲黄在线观看| 久久久久久69| 亚洲国产精品国自产拍av秋霞| 啪一啪鲁一鲁2019在线视频| 国产精品电影久久久久电影网| 成人美女免费网站视频| 91久久久久久| 久久久久999| 亚洲国产精品99久久| 亚洲人精品午夜在线观看| 亚洲精品成人久久电影| 日本高清不卡的在线| 欧美成aaa人片在线观看蜜臀| 一区二区在线视频| 日本免费在线精品| 欧美亚洲另类制服自拍| 精品视频久久久久久久| 538国产精品一区二区在线| 亚洲最大av网| 欧美日韩在线免费观看| 色妞久久福利网| 正在播放国产一区| 伊人av综合网| 久久久www成人免费精品| 亚洲精品成人网| 久久午夜a级毛片| 一区二区三区在线播放欧美| 久久精品小视频| 中文字幕日韩欧美在线| 色无极亚洲影院| 国产精品视频导航| 亚洲精品美女免费| 日韩av在线免费| 国产成人精品一区二区三区| 国产精品9999| 亚洲国产精品va在线观看黑人| 日韩av免费在线看| 性欧美xxxx| 在线观看亚洲视频| www.亚洲免费视频| 欧美午夜电影在线| 国产精品嫩草影院久久久| 久久琪琪电影院| 精品久久久久久久久久国产| 伊人成人开心激情综合网| 欧美日韩在线一区| 人人做人人澡人人爽欧美| 久久97精品久久久久久久不卡| 久久久综合免费视频| 久久深夜福利免费观看| 91精品国产高清自在线看超| 中文字幕亚洲情99在线| 亚洲国产精品免费| 亚洲一区中文字幕| 欧美成人精品h版在线观看| 97超碰蝌蚪网人人做人人爽| 久久国产精品久久精品| www.久久久久| 日韩毛片在线看| 亚洲国产91色在线| 亚洲乱码国产乱码精品精天堂| 欧美精品在线播放| 亚洲欧美精品suv| 国产亚洲精品久久| 精品人伦一区二区三区蜜桃免费| 精品久久久一区| 亚洲新声在线观看|