友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
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
…………………………………………………
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!