归墟
业精于勤,荒于嬉!
摘要: SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的数据库中不完全一样:MySQL: SUBSTR(), SUBSTRING()Oracle: SUBSTR()最常用到的方式如下 (在这里我们用SUBSTR()为例):SUBSTR(str,pos): 由<str>中,选出所有从第<pos>位置开始的字符。请注意,这个语法不适用于SQL Server 上。SUBSTR(str,pos,len): 由<str>中的第<pos>位置开始,选出接下去的<len>个字符。假设我们有以下的表格:Geo 阅读全文
posted @ 2012-06-04 16:24 Crazy-H 阅读(2700) 评论(0) 推荐(0) 编辑
摘要: CONCATENATE有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种数据库都有提供方法来达到这个目的:MySQL: CONCAT()Oracle: CONCAT(), ||SQL Server: +CONCAT() 的语法如下:CONCAT(字符串1, 字符串2, 字符串3, ...): 将字符串1、字符串2、字符串3,等字符串连在一起。请注意,Oracle 的CONCAT()只允许两个参数;换言之,一次只能将两个字符串串连起来。不过,在Oracle 中,我们可以用'||'来一次串连多个字符串。假设我们有以下的表格:Geography 表格region_name 阅读全文
posted @ 2012-06-04 11:41 Crazy-H 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 外部连接之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQLOUTER JOIN (外部连接) 的指令。外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上,我们会在WHERE 子句中要选出所有资料的那个表格之后加上一个 "(+)" 来代表说这个表格中的所有资料我们都要。假设我们有以下的两个表格:Store_Information 表 阅读全文
posted @ 2012-06-04 11:25 Crazy-H 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 表格连接join现在我们介绍连接(join)的概念。要了解连接,我们需要用到许多我们之前已介绍过的指令。我们先假设我们有以下的两个表格,Store_Information表格store_name Sales DateLos Angeles $1500 Jan-05-1999San Diego $250Jan-07-1999Los Angeles $300Jan-08-1999Boston $700Jan-08-1999Geography 表格region_name store_nameEast BostonEast New YorkWest Los AngelesWestSan Diego而. 阅读全文
posted @ 2012-06-04 11:17 Crazy-H 阅读(674) 评论(0) 推荐(0) 编辑
摘要: ALIAS接下来,我们讨论 alias (别名) 在 SQL 上的用处。最常用到的别名有两种:栏位别名及表格别名。简单地来说,栏位别名的目的是为了让 SQL 产生的结果易读。在之前的例子中,每当我们有营业额总合时,栏位名都是 SUM(sales)。虽然在这个情况下没有什么问题,可是如果这个栏位不是一个简单的总合,而是一个复杂的计算,那栏位名就没有这么易懂了。若我们用栏位别名的话,就可以确认结果中的栏位名是简单易懂的。第二种别名是表格别名。要给一个表格取一个别名,只要在 FROM 子句中的表格名后空一格,然后再列出要用的表格别名就可以了。这在我们要用 SQL 由数个不同的表格中获取资料时是很方便 阅读全文
posted @ 2012-06-04 11:10 Crazy-H 阅读(2703) 评论(0) 推荐(0) 编辑
摘要: HAVING那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。 HAVING子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含GROUP BY 子句。HAVING 的语法如下:SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1" 阅读全文
posted @ 2012-06-04 11:05 Crazy-H 阅读(226) 评论(0) 推荐(0) 编辑
摘要: GROUP BY如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为:SELECT "栏位1", SUM("栏位2") FROM "表格名" GROUP BY "栏位1"在我们的范例上,Store_Information 表格store_name Sales DateLo 阅读全文
posted @ 2012-06-04 11:02 Crazy-H 阅读(181) 评论(0) 推荐(0) 编辑
摘要: decode()函数DECODE函数是ORACLE PL/SQL功能强大的函数之一。Decode函数的语法结构如下:decode (expression, search_1, result_1)decode (expression, search_1, result_1, search_2, result_2)decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)decode (expression, search_1, result_1, default)decode (exp 阅读全文
posted @ 2012-05-22 15:58 Crazy-H 阅读(269) 评论(0) 推荐(0) 编辑
摘要: Oracle nvl()函数nvl( ) 函数从两个表达式返回一个非 null 值。语法NVL(eExpression1, eExpression2)参数eExpression1, eExpression2如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返 阅读全文
posted @ 2012-05-22 15:47 Crazy-H 阅读(238) 评论(0) 推荐(0) 编辑
摘要: lpad(string,numchars[,padding])从左面填充指定的字符串LPAD(’Jenny’,10)=‘Jenny’(5 leading spaces)默认填充空格LPAD(’Jenny’,10,’*!’)=‘*!*!*Jenny’rpad(string,numchars[,padding])从右面填充指定的字符串RPAD和LPAD(粘贴字符)RPAD 在列的右边粘贴字符LPAD 在列的左边粘贴字符SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;*******gao* 阅读全文
posted @ 2012-05-21 11:16 Crazy-H 阅读(1517) 评论(0) 推荐(0) 编辑