啪啪拉拉噼里啪啦

          初學(xué)者天堂資料匯集

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            16 隨筆 :: 73 文章 :: 16 評(píng)論 :: 0 Trackbacks
          字符串函數(shù)(一)
          作者:unknown 更新時(shí)間:2005-03-17  
           


          字符串函數(shù)對(duì)二進(jìn)制數(shù)據(jù)、字符串和表達(dá)式執(zhí)行不同的運(yùn)算。此類函數(shù)作用于CHAR、VARCHAR、 BINARY、 和VARBINARY 數(shù)據(jù)類型以及可以隱式轉(zhuǎn)換為CHAR 或VARCHAR的數(shù)據(jù)類型。可以在SELECT 語句的SELECT 和WHERE 子句以及表達(dá)式中使用字符串函數(shù)。常用的字符串函數(shù)有:

          1、字符轉(zhuǎn)換函數(shù)
          有以下幾種字符轉(zhuǎn)換函數(shù):
          ·ASCII()
          ASCII() 函數(shù)返回字符表達(dá)式最左端字符的ASCII 碼值。ASCII() 函數(shù)語法如下:


            例4-40:



          提醒:在ASCII()函數(shù)中,純數(shù)字的字符串可不用‘’括起來,但含其它字符的字符串必須用‘’括起來使用,否則會(huì)出錯(cuò)。

          ·CHAR()
          CHAR() 函數(shù)用于將ASCII 碼轉(zhuǎn)換為字符。其語法如下:

          如果沒有輸入0 ~ 255 之間的ASCII 碼值,CHAR() 函數(shù)會(huì)返回一個(gè)NULL 值。

            例4-41:


          ·LOWER()
          LOWER() 函數(shù)把字符串全部轉(zhuǎn)換為小寫,其語法如下:
             

            例4-42:


          ·UPPER()
          UPPER() 函數(shù)把字符串全部轉(zhuǎn)換為大寫,其語法如下:
           

            例4-43:


          ·STR()
          STR() 函數(shù)把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符型數(shù)據(jù),其語法如下:
          STR (<float _expression>[,length[, <decimal>]])
            自變量length 和decimal 必須是非負(fù)值,length 指定返回的字符串的長度,decimal 指定返回的小數(shù)位數(shù)。如果沒有指定長度,缺省的length 值為10, decimal 缺省值為0。 小數(shù)位數(shù)大于decimal 值時(shí),STR() 函數(shù)將其下一位四舍五入。指定長度應(yīng)大于或等于數(shù)字的符號(hào)位數(shù)+小數(shù)點(diǎn)前的位數(shù)+小數(shù)點(diǎn)位數(shù)+小數(shù)點(diǎn)后的位數(shù)。如果<float _expression>小數(shù)點(diǎn)前的位數(shù)超過了指定的長度,則返回指定長度的“*”。

            例4-44:


          2、去空格函數(shù)
          去空格函數(shù)有如下兩種:
          ·LTRIM()
          LTRIM() 函數(shù)把字符串頭部的空格去掉,其語法如下:
            LTRIM (<character _expression>)

            例4-45:


          ·RTRIM()
          RTRIM() 函數(shù)把字符串尾部的空格去掉,其語法如下:
            RTRIM (<character _expression>)

            例4-46:


          提示:在許多情況下,往往需要得到頭部和尾部都沒有空格字符的字符串,這時(shí)可將上兩個(gè)函數(shù)嵌套使用。

            例4-47:


          3、取子串函數(shù)
          取子串函數(shù)如下所示:
          ·LEFT()
          LEFT() 函數(shù)返回部分字符串,其語法如下:
            LEFT (<character_expression>, <integer_expression>)
            LEFT() 函數(shù)返回的子串是從字符串最左邊起到第integer_expression 個(gè)字符的部分。若integer_expression 為負(fù)值,則返回NULL 值。

            例4-48:


          ·RIGHT()
          RIGHT() 函數(shù)返回部分字符串,其語法如下:
            RIGHT (<character_expression>, <integer_expression>)
            RIGHT() 函數(shù)返回的子串是從字符串右邊第integer_expression 個(gè)字符起到最后一個(gè)字符的部分。若integer_expression 為負(fù)值,則返回NULL 值。

            例4-49:


          ·SUBSTRING()
          SUBSTRING() 函數(shù)返回部分字符串,其語法如下:
            SUBSTRING (<expression>, <starting_ position>, length)
            SUBSTRING() 函數(shù)返回的子串是從字符串左邊第starting_ position 個(gè)字符起length個(gè)字符的部分。其中表達(dá)式可以是字符串或二進(jìn)制串或含字段名的表達(dá)式。SUBSTRING()函數(shù)不能用于TEXT 和IMAGE 數(shù)據(jù)類型。

            例4-50:


          4、字符串比較函數(shù)
          字符串比較函數(shù)如下所示:
          ·CHARINDEX()
          CHARINDEX() 函數(shù)返回字符串中某個(gè)指定的子串出現(xiàn)的開始位置,其語法如下:
            CHARINDEX (<’substring_expression’>, <expression>)
            其中substring _expression 是所要查找的字符表達(dá)式,expression 可為字符串也可為列名表達(dá)式。如果沒有發(fā)現(xiàn)子串,則返回0 值。此函數(shù)不能用于TEXT 和IMAGE 數(shù)據(jù)類型。

            例4-51:


            例4-52:


          ·PATINDEX()
          PATINDEX() 函數(shù)返回字符串中某個(gè)指定的子串出現(xiàn)的開始位置,其語法如下:
            PATINDEX (<’%substring _expression%’>, <column_ name>)
            其中子串表達(dá)式前后必須有百分號(hào)“%”否則返回值為0。

            例4-53:


            與CHARINDEX() 函數(shù)不同的是,PATINDEX() 函數(shù)的子串中可以使用通配符,且此函數(shù)可用于CHAR、 VARCHAR 和TEXT 數(shù)據(jù)類型。

            例4-54:


          ·SOUNDEX()
          SOUNDEX() 函數(shù)返回一個(gè)四位字符碼,其語法如下:
            SOUNDEX (<character _expression>)
            SOUNDEX() 函數(shù)將character _expression 轉(zhuǎn)換為4 個(gè)字符的聲音碼。其中第一個(gè)碼為原字符串的第一個(gè)字符,第二到第四個(gè)字符則為數(shù)字,是該字符串的聲音字母所對(duì)應(yīng)的數(shù)字,但是忽略了除首字母外的串中的所有元音字母 。SOUNDEX() 函數(shù)可用來查找聲音相似的字符串。但SOUNDEX 函數(shù)對(duì)數(shù)字和漢字均只返回0 值。

            例4-55:


          ·DIFFERENCE()
          DIFFERENCE() 函數(shù)返回由SOUNDEX() 函數(shù)返回的兩個(gè)字符表達(dá)式的值的差異。其語法如下:
            DIFFERENCE (<character_expression1>, <character_expression2>)
            值的差異是用0、 1、 2、 3、 4 來表示的,含義如下:
            0--兩個(gè)SOUNDEX() 函數(shù)返回值的第一個(gè)字符不同
            1--兩個(gè)SOUNDEX() 函數(shù)返回值的第一個(gè)字符相同
            2--兩個(gè)SOUNDEX() 函數(shù)返回值的第一、二個(gè)字符相同
            3--兩個(gè)SOUNDEX() 函數(shù)返回值的第一、二、三個(gè)字符相同
            4--兩個(gè)SOUNDEX() 函數(shù)返回值完全相同

            例4-56:


          5、字符串操作函數(shù)
          字符串操作函數(shù)如下所示:
          ·QUOTENAME()
          QUOTENAME() 函數(shù)返回被特定字符括起來的字符串,其語法如下:
          QUOTENAME (<’character_expression’>[, quote_ character])
          其中quote_ character 標(biāo)明括字符串所用的字符,如“‘”、“(”、“[” 等,缺省值為“[]”

            例4-57:


          ·REPLICATE()
          REPLICATE() 函數(shù)返回一個(gè)重復(fù)character_expression 指定次數(shù)的字符串,其語法如下:
          REPLICATE (character_expression integer_expression)
          如果integer_expression 值為負(fù)值,則REPLICATE() 函數(shù)返回NULL 串。

            例4-58:


          ·REVERSE()
          REVERSE() 函數(shù)將指定的字符串的字符排列順序顛倒,其語法如下:
          REVERSE (<character_expression>)
          其中character_expression 可以是字符串、常數(shù)或一個(gè)列的值。

            例4-59:


          ·REPLACE()
          REPLACE() 函數(shù)返回被替換了指定子串的字符串,其語法如下:
          REPLACE (<string_expression1>, <string_expression2>, <string_expression3>)
          REPLACE() 函數(shù)用string_expression3 替換在string_expression1 中的子串string_expression2。

            例4-60:


          ·SPACE()
          SPACE() 函數(shù)返回一個(gè)有指定長度的空白字符串,其語法如下:
          SPACE (<integer_expression>)
          如果integer_expression 值為負(fù)值,則SPACE() 函數(shù)返回NULL 串。

            例4-61:


          ·STUFF()
          STUF()函數(shù)用另一子串替換字符串指定位置、長度的子串,其語法如下:
          STUFF (<character_expression1>, <start_ position>, <length>,<character_expression2>)
          如果起始位置為負(fù)或長度值為負(fù),或者起始位置大于character_expression1 的長度,則STUFF() 函數(shù)返回NULL 值。如果length 長度大于character_expression1 的長度,則character_expression1 只保留首字符。

            例4-62:


          6、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
          在一般情況下,SQL Server 會(huì)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換,例如,可以直接將字符數(shù)據(jù)類型或表達(dá)式與DATATIME 數(shù)據(jù)類型或表達(dá)式比較當(dāng)表達(dá)式中用了INTEGER、 SMALLINT或TINYINT 時(shí),SQL Server 也可將INTEGER 數(shù)據(jù)類型或表達(dá)式轉(zhuǎn)換為SMALLINT數(shù)據(jù)類型或表達(dá)式,這稱為隱式轉(zhuǎn)換。如果不能確定SQL Server 是否能完成隱式轉(zhuǎn)換或者使用了不能隱式轉(zhuǎn)換的其它數(shù)據(jù)類型,就需要使用數(shù)據(jù)類型轉(zhuǎn)換函數(shù)做顯式轉(zhuǎn)換了。此類函數(shù)有兩個(gè):
          ·CAST()
          CAST() 函數(shù)語法如下:
          CAST (<expression> AS <data_ type>[ length ])

          ·CONVERT()
          CONVERT() 函數(shù)語法如下:
          CONVERT (<data_ type>[ length ], <expression> [, style])

          提醒: 1、data_type為SQL Server系統(tǒng)定義的數(shù)據(jù)類型,用戶自定義的數(shù)據(jù)類型不能在此使用。
          2、length用于指定數(shù)據(jù)的長度,缺省值為30。
          3、把CHAR或VARCHAR類型轉(zhuǎn)換為諸如INT或SAMLLINT這樣的INTEGER類型、結(jié)果必須是帶正號(hào)(+)或負(fù)號(hào)(-)的數(shù)值。
          4、TEXT類型到CHAR或VARCHAR類型轉(zhuǎn)換最多為8000個(gè)字符,即CHAR或VARCHAR數(shù)據(jù)類型是最大長度。
          5、IMAGE類型存儲(chǔ)的數(shù)據(jù)轉(zhuǎn)換到BINARY或VARBINARY類型,最多為8000個(gè)字符。
          6、把整數(shù)值轉(zhuǎn)換為MONEY或SMALLMONEY類型,按定義的國家的貨幣單位來處理,如人民幣、美元、英鎊等。
          7、BIT類型的轉(zhuǎn)換把非零值轉(zhuǎn)換為1,并仍以BIT類型存儲(chǔ)。
          8、試圖轉(zhuǎn)換到不同長度的數(shù)據(jù)類型,會(huì)截短轉(zhuǎn)換值并在轉(zhuǎn)換值后顯示“+”,以標(biāo)識(shí)發(fā)生了這種截?cái)唷?BR>
            例4-63:


            例4-64:


            例4-65:



          用CONVERT() 函數(shù)的style 選項(xiàng)能以不同的格式顯示日期和時(shí)間。style 是將DATATIME 和SMALLDATETIME 數(shù)據(jù)轉(zhuǎn)換為字符串時(shí)所選用的由SQL Server 系統(tǒng)提供的轉(zhuǎn)換樣式編號(hào),不同的樣式編號(hào)有不同的輸出格式。如表4-8 所示。


            例4-66:


          7、日期函數(shù)
          日期函數(shù)用來操作DATETIME 和SMALLDATETIME 類型的數(shù)據(jù),執(zhí)行算術(shù)運(yùn)算。與其它函數(shù)一樣,可以在SELECT 語句的SELECT 和WHERE 子句以及表達(dá)式中使用日期函數(shù)。其使用方法如下:
           日期函數(shù)參數(shù),其中參數(shù)個(gè)數(shù)應(yīng)不同的函數(shù)而不同。

          ·DAY()
          DAY() 函數(shù)語法如下:
          DAY (<date_expression>)
          DAY() 函數(shù)返回date_expression 中的日期值。

            例4-67:


          在上例中,DAY() 函數(shù)使用整數(shù)值作參數(shù),系統(tǒng)從1900 年1 月1 日起往后數(shù)指定整數(shù)值+1, 天再返回其日期。

          ·MONTH()
          MONTH() 函數(shù)語法如下:
          MONTH (<date_expression>)
          MONTH() 函數(shù)返回date_expression 中的月份值。

            例4-68:


          與DAY() 函數(shù)不同的是,MONTH() 函數(shù)的參數(shù)為整數(shù)時(shí),一律返回整數(shù)值1,即SQL Server 認(rèn)為其是1900 年1 月。

            例4-69:


          ·YEAR()
          YEAR() 函數(shù)語法如下:
          YEAR (<date_expression>)
          YEAR() 函數(shù)返回date_expression 中的年份值。

            例4-70:


          提醒:在使用日期函數(shù)時(shí),其日期值應(yīng)在1753年到9999年之間,這是SQL Server系統(tǒng)所能識(shí)別的日期范圍,否則會(huì)出現(xiàn)錯(cuò)誤。

            例4-71:


          ·DATEADD()
          DATEADD() 函數(shù)語法如下:
          DATEADD (<datepart>, <number>, <date>)
          DATEADD() 函數(shù)返回指定日期date 加上指定的額外日期間隔number 產(chǎn)生的新日期。參數(shù)“datepart” 在日期函數(shù)中經(jīng)常被使用,它用來指定構(gòu)成日期類型數(shù)據(jù)的各組件,如年、季、月、日、星期等。其取值如表4-9 所示:


            例4-72:



          ·DATEDIFF()
          DATEDIFF() 函數(shù)語法如下:
          DATEDIFF() (<datepart>, <date1>, <date2>)
          DATEDIFF() 函數(shù)返回兩個(gè)指定日期在datepart 方面的不同之處,即date2 超過date1的差距值,其結(jié)果值是一個(gè)帶有正負(fù)號(hào)的整數(shù)值。針對(duì)不同的datepart, DATEDIFF()函數(shù)所允許的最大差距值不一樣,如:datepart 為second 時(shí),DATEDIFF() 函數(shù)所允許的最大差距值為68: 年datepart 為millisecond 時(shí),DATEDIFF() 函數(shù)所允許的最大差距值為24 天20 小時(shí)30 分23 秒647 毫秒。

            例4-73: 查詢?cè)诒締挝还ぷ髁? 年以上的員工的姓名和所在的部門,結(jié)果按在本單位工作的時(shí)間長短排序。


          ·DATENAME()
          DATENAME() 函數(shù)語法如下:
          DATENAME (<datepart>, <date)>
          DATENAME() 函數(shù)以字符串的形式返回日期的指定部分此部分。由datepart 來指定。

            例4-74: 查詢工資大于等于7000 的員工的姓名、部門編號(hào)、工資和進(jìn)入單位的年份,結(jié)果按工資高低降序排列。


          ·DATEPART()
          DATEPART() 函數(shù)語法如下:
          DATEPART (<datepart>, <date>)
          DATEPART() 函數(shù)以整數(shù)值的形式返回日期的指定部分。此部分由datepart 來指定。
          DATEPART (dd, date) 等同于DAY (date)
          DATEPART (mm, date) 等同于MONTH (date)
          DATEPART (yy, date) 等同于YEAR (date)

            例4-75:


          ·GETDATE()
          GETDATE() 函數(shù)語法如下:
          GETDATE()
          GETDATE() 函數(shù)以DATETIME 的缺省格式返回系統(tǒng)當(dāng)前的日期和時(shí)間,它常作為其它函數(shù)或命令的參數(shù)使用。

            例4-71:

           
          posted on 2005-04-07 14:04 噼里啪啦的世界 閱讀(818) 評(píng)論(5)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          評(píng)論

          # re: 字符串函數(shù)(一) 2007-07-25 17:27 nnnn
          nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
          nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
          bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
            回復(fù)  更多評(píng)論
            

          # re: 字符串函數(shù)(一) 2007-07-25 17:28 nnnn
          jjjjjjjjjjjj
          jjjjjjjjjjj
          mmmmmmmmmmm
          mmmmmmmmmmmmmm
            回復(fù)  更多評(píng)論
            

          # re: 字符串函數(shù)(一) 2007-07-25 17:28 nnnn
          fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
          hhhhhhhhhhh
          kkkkkkkkkkkkkkkkkkkkkk
            回復(fù)  更多評(píng)論
            

          # re: 字符串函數(shù)(一) 2007-07-25 17:31 nnnn
          hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
          hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh  回復(fù)  更多評(píng)論
            

          # re: 字符串函數(shù)(一) 2007-07-25 17:31 nnnn
          ffffffffffffffffffffffffffffffffff
          fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
          fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
            回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 大石桥市| 光山县| 扶绥县| 冕宁县| 琼海市| 河西区| 安溪县| 五华县| 乐都县| 巴马| 景谷| 惠东县| 佛山市| 阜新市| 望江县| 黄平县| 喀喇沁旗| 芒康县| 丹棱县| 工布江达县| 姜堰市| 彝良县| 周宁县| 蒙自县| 内丘县| 淮北市| 石门县| 廊坊市| 枞阳县| 卫辉市| 康乐县| 吴忠市| 策勒县| 揭东县| 咸丰县| 高淳县| 临泉县| 西乡县| 龙川县| 清流县| 乌苏市|