友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第20部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
输出
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
…………………………………………………………Page 90……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
DEPARTMENT
2 FROM JOB_TBL;
输出
NAME________________JOB_______________DEPARTMENT_____
ALVIN SMITH VICEPRESIDENT MARKETING
是不是变得好多了
TRANSLATE
这一函数有三个参数 目标字符串 源字符串和目的字符串 在目标字符串与源字符
串中均出现的字符将会被替换成对应的目的字符串的字符
输入
SQL》 SELECT FIRSTNAME; TRANSLATE(FIRSTNAME
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
'NNNNNNNNNNAAAAAAAAAAAAAAAAAAAAAAAAAA) FROM
CHARACTERS
输出
FIRSTNAME TRANSLATE(FIRST
kelly kelly
CHUCK AAAAA
LAURA AAAAA
FESTER AAAAAA
ARMANDO AAAAAAA
MAJOR AAAAA
6 rows selected。
注意 这个函数对大小写是敏感的
INSTR
如果需要知道在一个字符串中满足特定的内容的位置可以使用 INSTR 它的第一个参
数是目标字符串 第二个参数是匹配的内容 第三和第四个参数是数字 用以指定开始搜
EMAIL wyhsillypig@163。 90
…………………………………………………………Page 91……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
索的起点以及指出第几个满足条件的将会被返回 下例将从字符串的第二个字符开始 搜
索并返回第一个以 O 开头的字符的位置
输入
SQL》SELECT LASTNAME INSTR LASTNAME O 2 1 FROM CHARACTERS
输出
LASTNAME INSTR(LASTNAME;'O';2;1)
PURVIS 0
TAYLOR 5
CHRISTINE 0
ADAMS 0
COSTALES 2
KONG 2
6 rows selected
分析
默认第三个与第四个参数的数值均为 如果第三个数值为负数 那么将会从后向前搜索
LENGTH
LENGTH 将返回指定字符串的长度 例如
输入
SQL》SELECT FIRSTNAME LENGTH RTRIM FIRSTNAME FROM CHARACTERS
输出
FIRSTNAME LENGTH(RTRIM(FIRSTNAME))
kelly 5
CHUCK 5
LAURA 5
FESTER 6
ARMANDO 7
MAJOR 5
注意 这里使用了函数 RTRIM 否则 LENGTH 将全部返回 15
转换函数
转换函数有三个 可以使你方便地将数据从一种类型变换为另一种类型 本节的示例
EMAIL wyhsillypig@163。 91
…………………………………………………………Page 92……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
使用表 CONVERSIONS
输入
SQL》 SELECT * FROM CONVERSIONS
输出
NAME TESTNUM
40 95
13 23
74 68
NAME 列为字符串 该列的宽度为 15 TESTNUM 列为数字
TO_CHAR
该函数的最初功能是将一个数字转换为字符型 不同的解释器可能会使用它来转换其它的
数据类型 例如日期型转换为字符型或者是拥有更多的参数 下例展示了该函数的基本功
能
输入
SQL》 SELECT TESTNUM TO_CHAR TESTNUM FROM CONVERT
输出
TESTNUM TO_CHAR(TESTNUM)
95 95
23 23
68 68
稍安勿燥 下例可以证明它确实已经将 TESTNUM 转换为字符型了
输入
SQL》SELECT TESTNUM LENGTH TO_CHAR TESTNUM FROM CONVERT
输出
TESTNUM LENGTH(TO_CHAR(TESTNUM))
95 2
23 2
68 2
分析
如果对数字使用 LENGTH 函数将会返回错误 注意 TO_CHAR 与在先前进过的 CHR 不同
EMAIL wyhsillypig@163。 92
…………………………………………………………Page 93……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
CHR 返回字符集中给定数字位置的一个字符或符号
TO_NUMBER
该函数与 TO_CHAR 函数相对应 显而易见 它是将一个字符串型数字转换为数值型 例
如
输入
SQL》 SELECT NAME TESTNUM TESTNUM*TO_NUMBER NAME FROM CONVERT
输出
NAME TESTNUM TESTNUM*TO_NUMBER(NAME)
40 95 3800
13 23 299
74 68 5032
分析
如果该函数没有将 NAME 转换为数值的话将会返回一个错误信息
其它函数
这里有三个函数可能对你是有用处的
GREATEST 与 LEAST
这两个函数将返回几个表达式中最大的和最小的 例如
输入
SQL》 SELECT GREATEST ALPHA BRAVO FOXTROT DELTA
FROM CONVERT
输出
GREATEST
FOXTROT
FOXTROT
FOXTROT
分析
注意 GREATEST 将会返回在字母表中最靠后的字符开头的字符串 虽然看起来似乎没
EMAIL wyhsillypig@163。 93
…………………………………………………………Page 94……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
有必要使用 FROM 子句 可是如果 FROM 子句没有的话 你将会收到一个错误信息 每
一个 SELECT 语句都需要 FROM 子句 由于给定的表有三行 所以结果返回了三个
输入
SQL》 SELECT LEAST 34 567 3 45 1090 FROM CONVERT
输出
LEAST(34 567 3 45 1090)
3
3
3
就像你看到的那样 这两个函数也可以对数字进行处理
USER
该函数返回当前使用数据库的用户的名字
输入
SQL》 SELECT USER FROM CONVERT
输出
USER
PERKINS
PERKINS
PERKINS
只有我一个人在使用这个数据库 看 SELECT 又一次对表中的每一行都返回了结果
该函数与在今天早些时候提及的日期函数类似 甚至尽管 USER 不是表中确实存在的列
但 SELECT 仍然检索了表中的每一行
总结
好长的一天啊 我们一共学习了 47 个函数 你无需记住每一个函数 只需要知道它们
的大致类型 算术函数 日期/ 时间函数 字符函数 转换函数 其它函数 而当你写一
个查询的时候你有一个明确的目标就够了
EMAIL wyhsillypig@163。 94
…………………………………………………………Page 95……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
问与答
问 为什么在 ANSI 标准中定义的函数这么少 而不同的解释器又都定义了这么多的函数
答 ANSI 标准是一个非常宽松的标准 而且如果对所有的解释器生产厂家来说过多的限
制会使其走向破产的道路 另一方面 如果 A 公司对 SQL 补充了一个用于统计的函
数包而销路特别好的话 那么 B 公司和 C 公司一定也会跟着做的
问 我认为你对 SQL 的介绍太简单了 我的工作时应该如何去使用这些函数呢
答 这个问题与一个都三角的教师所提出的问题类似 事实上我也不知道如何却求一个等
腰三角形的面积 所以 我的回答是 根据你的职业而定 你的工作中需要用到哪些
函数你就去使用它 而其它的对你来说则是没有必要掌握的 这一观点也适用于你的
查询
校练场
1 哪个函数是用来将给定字符串的第一个字母变成大写而把其它的字符变成小写的
2 哪此函数的功能就如同它的名字含义一样
3 下边的查询将如何工作
SQL》 SELECT COUNT(LASTNAME) FROM CHARACTERS;
4 下边的查询是干什么的
SQL》 SELECT SUM(LASTNAME) FROM CHARACTERS;
5 哪个函数可以将 FIRSTNAME 列与 LASTNAME 列合并到一起
6 在下边的查询中 6 是什么意思
输入
SQL》 SELECT COUNT(*) FROM TEAMSTATS;
输出
COUNT(*)
6
7 下列语句将输出什么
SQL》 SELECT SUBSTR LASTNAME;1;5 FROM NAME_TBL;
EMAIL wyhsillypig@163。 95
…………………………………………………………Page 96……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
练习
1 用今天的 TEAMSTARTS 表来写一个查询 用来显示谁的中球率低于 0。25 中球率
的计算方法为 hits/ab
2 用今天的 CHARACTERS 表来写一个查询 要求返回下边的结果
INITIALS__________CODE
K。A。P。 32
1 row selected。
EMAIL wyhsillypig@163。 96
…………………………………………………………Page 97……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第五天 SQL 中的子句
目标
今天的主题是子句 — — 它不是你在渡假时的赠品 而是你所学习的 SELECT 语句的一
个组成部分 在今天结束以后我们将学会以下子句
l WHERE
l STARTING WITH
l ORDER BY
l GROUP BY
l HAVING
为了对这些子句有一个大致的印象 请看一下 SELECT 语句的通用语法表达式
语法
SELECT 'DISTINCT | ALL' { *
| { 'schema。'{table | view | snapshot}。*
| expr } ' 'AS' c_alias '
'; { 'schema。'{table | view | snapshot}。*
| expr } ' 'AS' c_alias ' ' 。。。 }
FROM 'schema。'{table | view | snapshot}'@dblink' 't_alias'
'; 'schema。'{table | view | snapshot}'@dblink' 't_alias' ' 。。。
'WHERE condition '
'GROUP BY expr '; expr' 。。。 'HAVING condition' '
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!