友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第14部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




       …57。667  42           9。098E+73 



       15       55           4。842E+64 



       …7。2     6            139314。07 



现在就可以有正确的结果了 



SIGN 



    如果参数的值为负数  那么 SIGN 返回…1           如果参数的值为正数  那么 SIGN 返回 1 



如果参数为零  那么 SIGN 也返回零  请看下例 



EMAIL  wyhsillypig@163。                                            79 


…………………………………………………………Page 80……………………………………………………………

SQL 21  日自学通(V1。0)                                                翻译人    笨猪 



输入 



SQL》SELECT    A  SIGN  A   FROM   NUMBERS 



输出 



      A        SIGN  A      A         SIGN  A 



      3。1415   1            …57。667   …1 



      …45      …1           15        1 



      5        1            …7。2      …1 



    你也可以在 SELECT WHERE 子句中使用 SIGN 



输入 



SQL》SELECT    A  FROM   NUMBERS    WHERE    SIGN   A  =1 



输出 



      A 



      3。1415 



      5 



      15 



SQRT 



    该函数返回参数的平方根            由于负数是不能开平方的  所以我们不能将该函数应用于 



负数 



输入/输出 



SQL》SELECT    A  SQRT   A  FROM   NUMBERS 



ERROR 



ORA…01428   argument '…45' is out of range 



但是你可以使用绝对值来解除这一限制 



输入/输出 



SQL》SELECT    ABS  A    SQRT  ABS   A   FROM   NUMBERS 



        ABS(A)    SQRT(ABS(A)) 



        3。1415    1。7724277 



        45        6。7082039 



        5         2。236068 



        57。667    7。5938791 



EMAIL  wyhsillypig@163。                                                80 


…………………………………………………………Page 81……………………………………………………………

SQL 21  日自学通(V1。0)                                          翻译人   笨猪 



       15       3。8729833 



       7。2      2。6832816 



       0        0 



字符函数 



    许多 SQL 解释器都提供了字符和字符串的处理功能               本部分覆盖了大部分字符串处理 



函数  这一部分的例子使用 CHARACTERS 表 



输入/输出 



SQL》  SELECT  *  FROM  CHARACTERS 



     LASTNAME     FIRSTNAME    M    CODE 



     PURVIS       KELLY        A    32 



     TAYLOR       CHUCK        J    67 



     CHRISTINE    LAURA        C    65 



     ADAMS        FESTER       M    87 



     COSTALES     ARMANDO      A    77 



     KONG         MAJOR        G    52 



CHR 



    该函数返回与所给数值参数等当的字符              返回的字符取决于数据库所依赖的字符集 



例如示例的数据库采用了 ASCLL 字符集           示例数据库的代码列的内容为数字 



输入 



SQL》SELECT  CODE   CHR  CODE    FROM   CHARACTERS 



输出 



       CODE    CH    CODE    CH 



       32            87      W 



       67      C     77      M 



       65      A     52      4 



    在数值 32 处显示为空白       因为 32 在 ASCLL 码表中是空格 



CONCAT 



    我们在第 3   天时学到过一个与这个函数所执行的功能相当的操作                     符号表示将两个 



EMAIL wyhsillypig@163。                                          81 


…………………………………………………………Page 82……………………………………………………………

SQL 21  日自学通(V1。0)                                               翻译人   笨猪 



字符串连接起来  CONCAT        也是完成这个功能的  使用方法如下 



输入 



SQL》SELECT   CONCAT    FIRSTNAME   LASTNAME    〃FIRST  AND   LAST   NAMES〃 



    FROM   CHARACTERS 



输出 



       FIRST AND LAST NAMES 



       KELLY                    PURVIS 



       CHUCK                    TAYLOR 



       LAURA                    CHRISTINE 



       FESTER                  ADAMS 



       ARMANDO                COSTALES 



       MAJOR                    KONG 



分析 



    当用多个词来做为别名时需对它们使用引号  请检查你的解释器  看看它是否支持别 



名 



    需要注意的是尽管在看起来输出似乎是两列  但实际上它仍是一列                           这是因为你所连 



接的 Firstname 字段的宽度为 15       函数取得了该列中的所有数据  包括其中用以补足宽度 



的空格 



INITCAP 



    该函数将参数的第一个字母变为大写  此外其它的字母则转换成小写 



    输入 



    SQL》SELECT   FIRSTNAME    BEFORE   INITCAP  FIRSTNAME    AFTER 



        FROM   CHARACTERS 



    输出 



           BEFORE       AFTER 



           KELLY        Kelly 



           CHUCK        Chuck 



           LAURA        Laura 



           FESTER       Fester 



           ARMANDO      Armando 



           MAJOR        Major 



EMAIL  wyhsillypig@163。                                               82 


…………………………………………………………Page 83……………………………………………………………

SQL 21  日自学通(V1。0)                                          翻译人   笨猪 



LOWER 和 UPPER 



    如你所料  LOWER 将参数转换为全部小写字母而 UPPER 则把参数全部转换成大写字 



母 



    下例是用 LOWER 函数和一个叫 UPDATE 的函数来把数据库的内容转变为小写字母 



    输入 



    SQL》UPDATE  CHARACTERS   SET  FIRSTNAME='kelly' 



         WHERE   FIRSTNAME='KELLY' 



    输出 



    1 row updated。 



    输入 



    SQL》SELECT  FIRSTNAME  FROM   CHARACTERS 



    输出 



        FIRSTNAME     FIRSTNAME 



        kelly         FESTER 



        CHUCK         ARMANDO 



        LAURA         MAJOR 



    然后  请您再输入 



    SQL》SELECT  FIRSTNAME  UPPER   FIRSTNAME   LOWER   FIRSTNAME 



         FROM  CHARACTERS 



    输出 



        FIRSTNAME    UPPER(FIRSTNAME     LOWER   FIRSTNAME 



        kelly        KELLY               kelly 



        CHUCK        CHUCK               chuck 



        LAURA        LAURA               laura 



        FESTER       FESTER              fester 



        ARMANDO      ARMANDO             armando 



        MAJOR        MAJOR               major 



    现在你明白这两个函数的作用了吧 



EMAIL wyhsillypig@163。                                          83 


…………………………………………………………Page 84……………………………………………………………

SQL 21  日自学通(V1。0)                                              翻译人    笨猪 



LPAD 与 RPAD 



    这两个函数最少需要两个参数             最多需要三个参数  每一个参数是需要处理的字符串 



第二个参数是需要将字符串扩充的宽度                 第三个参数表示加宽部分用什么字符来做填补 



第三个参数的默认值为空格             但也可以是单个的字符或字符串              下面的句子中向字段中加 



入了五个字符        该字段的定义宽度为  5 



    输入 



    SQL》SELECT LASTNAME    LPAD  LASTNAME    20   *    FROM CHARACTERS 



    输出 



         LASTNAME      LPAD  LASTNAME    20   *  ) 



         PURVIS        *****PURVIS 



         TAYLOR        *****TAYLOR 



         CHRISTINE     *****CHRISTINE 



         ADAMS         *****ADAMS 



         COSTALES      *****COSTALES 



         KONG          *****KONG 



分析 



    为什么只添加了 5 个占位字符呢            不要忘记 LASTNAME 列是 15 个字符宽  在可见字 



符的右方填充着空格以保证字符的定义宽度                   请检查一下你所用的解释器            现在再试一下 



右扩充 



输入 



SQL》 SELECT   LASTNAME    RPAD  LASTNAME    20   *   FROM   CHARACTERS 



输出 



LASTNAME                   RPAD(LASTNAME;20;'*' 



PURVIS                 PURVIS                  ***** 



TAYLOR                 TAYLOR                  ***** 



CHRISTINE              CHRISTINE            ***** 



ADAMS                    ADAMS                    ***** 



COSTALES                 COSTALES              ***** 



KONG                   KONG                      ***** 



分析 



通过这个操作我们可以清楚地看到空格也是该字段内容的一部分这一事实了                               下边的两个 



EMAIL  wyhsillypig@163。                                              84 


…………………………………………………………Page 85……………………………………………………………

SQL 21  日自学通(V1。0)                                        翻译人   笨猪 



函数正是用于这一情况的 



LTRIM 与 RTRIM 



   LTRIM 和 RTRIM 至少需要一个参数 最多允许两个参数 第一个参数与 LPAD 和 RPAD 



类似   是一个字符串      第二个参数也是一个字符或字符串  默认则是空格                 如果第二个参 



数不是空格的话  那么该函数将会像剪除空格那样剪除所指定的字符                     如下例 



输入 



SQL》 SELECT LASTNAME   RTRIM  LASTNAME   FROM   CHARACTERS 



输出 



LASTNAME    RTRIM(LASTNAME) 



PURVIS      PURVIS 



TAYLOR      TAYLOR 



CHRISTINE   CHRISTINE 



ADAMS       ADAMS 



COSTALES    COSTALES 



KONG        KONG 



你可以用下边的语句来确认字符中的空格已经被剪除了 



输入 



SQL》   SELECT LASTNAME   RPAD   RTRIM   LASTNAME     20   *   FROM 



CHARACTERS 



输出 



     LASTNAME     RPAD(RTRIM(LASTNAME) 



     PURVIS       PURVIS************** 



     TAYLOR       TAYLOR************** 



     CHRISTINE    CHRISTINE*********** 



     ADAMS        ADAMS*************** 



     COSTALES     COSTALES************ 



     KONG         KONG**************** 



输出证明的确已经进行了剪除工作            现在请再试一个 LTRIM 



输入 



SQL》SELECT  LASTNAME   LTRIM  LASTNAME   C   FROM   CHARACTERS 



输出 



EMAIL wyhsillypig@163。                                        85 


…………………………………………………………Page 86……………………………………………………………

SQL 21  日自学通(V1。0)                                        翻译人   笨猪 



     LASTNAME     LTRIM(LASTNAME; 



     PURVIS       PURVIS 



     TAYLOR       TAYLOR 



     CHRISTINE    HRISTINE 



     ADAMS        ADAMS 



     COSTALES     OSTALES 



     KONG         KONG 



注意   第三行和第五行的       已经没有了 



REPLACE 



   它的工作就如果它的名字所说的那样              该函数需要三个参数        第一个参数是需要搜索 



的字符串  第二个参数是搜索的内容  第三个参数则是需要替换成的字符串                       如果第三个 



参数省略或者是 NULL      那么将只执行搜索操作而不会替换任何内容 



输入 



SQL》 SELECT LASTNAME  REPLACE  LASTNAME    ST    REPLACEMENT FROM 



CHARACTERS 



输出 



        LASTNAME     REPLACEMENT 



        PURVIS       PURVIS 



        TAYLOR       TAYLOR 



        CHRISTINE    CHRIINE 



        ADAMS       ADAMS 



        COSTALES     COALES 



        KONG         KONG 



如果存在第三个参数        如么在每一个目标字符串中搜索到的内容将会被由第三个参数所指 



定的字符串替换  例如 



输入 



SQL》 SELECT LASTNAME   REPLACE  LASTNAME    ST    **  REPLACEMENT 



     FROM  CHARACTERS 



输出 



       LASTNAME    REPLACEMENT 



       PURVIS      PURVIS 



EMAIL wyhsillypig@163。                                        86 


…………………………………………………………Page 87……………………………………………………………

SQL 21  日自学通(V1。0)                                         翻译人   笨猪 



       TAYLOR      TAYLOR 



       CHRISTINE   CHRI**INE 



       ADAMS       ADAMS 



       COSTALES    CO**ALES 



       KONG        KONG 



如果没有第二个参数  那么只有将源字符串返回而不会执行任何操作 



输入 



SQL》 SELECT  LASTNAME   REPLACE  LASTNAME   NULL    REPLACEMENT 



     FROM   CHARACTERS 



输出 



       LASTNAME    REPLACEMENT 



       PURVIS      PURVIS 



       TAYLOR      TAYLOR 



       CHRISTINE   CHRISTINE 



       ADAMS       ADAMS 



       COSTALES    COSTALES 



       KONG        KONG 



SUBSTR 



   这个函数有三个参数         允许你将目标字符串的一部份输出  第一个参数为目标字符串 



第二个字符串是将要输出的子串的起点              第三个参数是将要输出的子串的长度 



输入 



SQL》SELECT  FIRSTNAME   SUBSTR  FIRSTNAME  2  3 FROM   CHARACTERS 



       输出 



       FIRSTNAME    SUB 



       kelly        ell 



       CHUCK        HUC 



       LAURA        AUR 



       FESTER       EST 



       ARMANDO      RMA 



       MAJOR        AJO 



如果第二个参数为负数         那么将会从源串的尾部开始向前定位至负数的绝对值的位置                     例 



如 



EMAIL wyhsillypig@163。                                          87 


…………………………………………………………Page 88……………………………………………………………

SQL 21  日自学通(V1。0)                                             翻译人   笨猪 



输入 



SQL》 SELECT  FIRSTNAME   SUBSTR  FIRSTNAME    …13 2  FROM  CHARACTERS 



输出 



      FIRSTNAME    SU 



      kelly        ll 



      CHUCK        UC 



      LAURA        UR 



      FESTER       ST 



      ARMANDO      MA 



      MAJOR        JO 



分析 



切记 FIRSTNAME 字段的宽度为 15        这也就是为什么参数为…13  时会从第三个开始的原因 



因为从 15 算起向前算第 13 个字符正好是第 3 个字符               如果没有第三个参数  将会输出字 



符串余下的部分 



输入 



SQL》 SELECT  FIRSTNAME    SUBSTR  FIRSTNAME   3  FROM   CHARACTERS 



      输出 



      FIRSTNAME    SUBSTR(FIRSTN 



      kelly        lly 



      CHUCK        UCK 



      LAURA        URA 



      FESTER       STER 



      ARMANDO      MANDO 



      MAJOR        JOR 



看   是不是将字符串余下的部分返回了 



现在再来看一个例子 



输入 



SQL》 SELECT  *  FROM   SSN_TABLE 



输出 



SSN__________ 



300541117 



301457111 



459789998 



EMAIL  wyhsillypig@163。                                            88 


…………………………………………………………Page 89……………………………………………………………

SQL 21  日自学通(V1。0)                                            翻译人    笨猪 



如果直接阅读上边的结果是比较困难的                比较好的解决办法是使用下划线  请先想一下下 



边语句的输出情况 



输入 



SQL》  SELECT  SUBSTR  SSN   1 3  ||'…'||SUBSTR SSN 4 2 ||'…'||SUBSTR SSN 



6  4 



      SSN  FROM   SSN_TABLE 



输出 



      SSN_________ 



      300…54…1117 



      301…45…7111 



      459…78…9998 



注   这在当数字特别大        例如    1  343 178  128 需要用逗号分隔时以及区位号码或电 



话号码需要下划线分隔时特别有效 



这是 SUBSTR  的另一个非常有用的功能  倘若你需要打印一个报表而其中一些列的宽度超 



过了 50  个字符时     你可以使用 SUBSTR  来减小列宽以使它更接近数据的真实宽度  请看 



一个下面的这两个例子 



输入 



SQL》 SELECT  NAME   JOB  DEPARTMENT    FROM JOB_TBL 



输出 



NAME______________________________________________________________ 



JOB_______________________________DEPARTMENT______________________ 



ALVIN  SMITH 



VICEPRESIDENT                                          MARKETING 



1 ROW SELECTED。 



分析 



    注意  这几列已经换行显示了  这例得阅读变行非常困难  现在试一下下边的 SELECT 



语句 



输入 



SQL》 SELECT SUBSTR(NAME; 1;15) NAME; SUBSTR(JOB;1;15) JOB; 



EMAIL  wyhsillypig@163。                                            89 


…………………………………………………
返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!