SQL学习总结(一)【计算字段&数据处理函数】

来源:互联网 发布:免费云打印软件 编辑:程序博客网 时间:2024/05/17 09:10

1.关于计算字段 

 计算字段并不实际存在于数据库中,计算字段是运行时在select语句内创建的。有拼接字段、对字段进行算术运算等方式创建计算字段。

select vend_name+'('+vend_country+')' from Vendors order by vend_name;

 如上,直接在select语句后面进行拼接(MySql不支持+或者||,可以使用concat函数进行拼接),也可以通过下列方式为产生的计算字段命名。

select rtrim(vend_name)+'('+rtrim(vend_country)+')'   as Vend_title from Vendors order by vend_name;
</pre><pre class="sql" name="code">select prod_id,quantity,item_price,quantity*item_price AS expanded_price from OrderItems where order_num = 20008;

2.数据处理函数

首先要明白的是,不是所有的DBMS都等同地支持相同的函数,只有少量的函数被所有的DBMS支持,因此SQL函数是不可移植的。

大多数sql支持以下类型的函数:

① 用于处理文本串的文本函数;

SELECT vend_name  UPPER(vend_name) as vend_name_upcase FROM Vendors ORDER BY vend_name;

UPPER()函数是将文本转换为大写。常用的文本处理函数有:LEFT()   RTRIM() SOUNDEX() 等等。其中SOUNDEX是一个将任何文本串装换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较。例如:

 select status from device  where SOUNDEX(status) = SOUNDEX('stdent');

结果:

+---------+| status  |+---------+| student |+---------+

②日期和时间处理函数

日期和时间处理函数在SQL中具有重要的作用,但是他们很不一致,移植性最差;

 

SELECT order_num FROM Orders WHERE DATAPART(yy,order_date) = 2004;


返回结果:

order_num-------------------20005200062000720008


上例:DATEPART()函数有两个参数,他们分别是返回的成分和从中返回成分的日期。在此例子中,DATEPART()只从order_data列中返回年份。通过与2004比较,WHERE子句只过滤出此年份的订单。即编号为20005,20006,20007,20008的订单是2004年生成的。

需要注意的是:不同的DBMS日期处理函数很不同。

③数值处理函数

数值处理函数仅仅用于处理数值数据,这些函数一般主要用于代数或者几何运算。数值运算函数是主要的DBMS中最一致的函数。

0 0