一、连接符
连接符的应用
用户在访问数据库时,往往需要将表中的几列数据作为一列进行处理,这时可采用连接符“+”(或“||”)。究竟采用何种符号,要依据用户要访问的数据库系统。在Access 、SQL和Sybase数据库系统中采用的连接符为“+”,在DB2、Oracle 、PostgreSQL和Sybase数据库系统中,采用的连接符为“||”。
Select col1 + ‘ ( ’+ col2 +‘ )’ , col3
From table_name
Order by col3
注:
·如果用户使用的是mysql数据库,由于它不支持连接符,取而代之的是concat()函数,通过语句select concat(col1,‘(’,col2,‘)’)实现与连接符相同的操作。
·使用连接符进行多列连接时,要求被连接的列必须有相同或相近的数据类型。
·如果连接多列时,有一列为NULL,则连接后该列数据为NULL。
使用cast表达式转换数据类型
Select col1 + cast ( col2 as data_type(字节) ) ,col3
From table_name
使用别名
SQL 提供AS关键字,使用它可以为列和表定义别名。
Select column as column_alias
From table
二、数值运算
数学运算符的种类
在SQL中可用的数学运算符如下:+,-,*,/,%。使用运算符时,也可以使用括号()改变运算的优先级。
数学运算符的运用
Select col1 , col2 , col1*col2 as col_alias
From table
Order by col_alias
使用case表达式
Case表达式实际上十一个条件表达式,能够根据列的值选择实际值,为SQL提供了有限的决策能力。
Case
When search_condition then result_expression
[ … when last search_condition
Then last result_expression ]
[
Else else_result_expression
]
End
举例说明:
Select cname,ctime,credit=
Case
When ctime>=40 then 5
When ctime>=30 then 4
When ctime>=20 then 3
Else 2
End
From course
Order by credit
三、函数
字符处理函数
在SQL Server数据库系统中,常用的SQL字符处理函数及其功能如下所示:
函数表达式 | 函数参数及功能 |
ASCII(<character_expression>) | 返回字符表达式最左端字符的ASCII码值 |
CHAR(<integer_expression>) | 将ASCII码转换为字符。如果没有输入0~255之间的ASCII码值,函数会返回一个NULL值 |
LOWER(<character_expression>) | 把字符串全部转换为小写 |
UPPER(<character_expression>) | 把字符串全部转换为大写 |
LTRIM(<character_expression>) | 把字符串头部的空格去掉 |
RTRIM(<character_expression>) | 把字符串尾部的空格去掉 |
LEFT(<character_expression>, <integer_expression>) | 返回部分字符串,返回的字串是从字符串最左边起,到第integer_expression个字符的部分 |
RIGTH(<character_expression>, <integer_expression>) | 返回部分字符串,返回的字串是从字符串右边第integer_expression个字符起,到最后一个字符的部分 |
CHARINDEX(‘substring_expression’>, <expression>) | 返回字符串中某个指定的字串出现的开始位置,substring_expression是所要查找的字符表达式,expression可以使字符串,也可以是列名表达式。如果没有发现字串,则返回0。此函数不能用于TEXT和IMAGE数据类型。 |
SUBSTRING(<expression>, <starting_position>,length) | 返回部分字符串,返回的字串是从字符串左边第starting_expression个字符起,length个字符的部分。 |
REPLICATE(character_expression, Integer_expression) | 返回一个重复character_expression指定次数的字符串 |
REVERSE(<character_expression>) | 将指定的字符串的字符排列顺序颠倒。Character_expression可以是字符串、常数或一个列的值 |
REPLACE(<string_expression1>, <string_expression2>, <string_expression3>) | 用string_expression3替换string_expression1中的字串string_expression2 |
算数运算函数
在SQL Server数据库系统中,常用的SQL算数计算函数及其功能如下所示:
函数表达式 | 函数参数及功能 |
ABS(numeric_expression) | 返回表达式的绝对值 |
SIGN(numeric_expression) | 测试参数的正负号。返回0(零值),1(正数),-1(负数) |
CEILING(numeric_expression) | 返回>=表达式的最小整数 |
FLOOR(numeric_expression) | 返回<=表达式的最小整数 |
ROUND(numeric_expression, integer_expression) | 返回以integer_expression为精度的四舍五入值 |
COS(float_expression) | 返回以弧度表示的角的余弦 |
ACOS(float_expression) | 返回余弦是FLOAT值的以弧度表示的角 |
SIN(float_expression) | 返回以弧度表示的角的正弦 |
ASIN(float_expression) | 返回正弦是FLOAT值的以弧度表示的角 |
TAN(float_expression) | 返回以弧度表示的角的正切 |
ATAN(float_expression) | 返回正切是FLOAT值的以弧度表示的角 |
EXP(float_expression) | 返回表达式的指数值 |
LOG(float_expression) | 返回表达式的自然对数值 |
SORT(float_expression) | 返回表达式的平方根 |
PI() | 返回值为∏,即3.1415926535897936 |
RAND() | 得到0~1之间的随机浮点数 |
日期时间函数
在SQL Server数据库系统中,常用的SQL日期处理函数及其功能如下所示:
函数表达式 | 函数参数及功能 |
DAY(<date_expression>) | 返回date_expression中的日期值 |
MONTH(<date_expression>) | 返回date_expression中的月份值 |
YEAR(<date_expression>) | 返回date_expression中的年份值 |
DATEADD(<datepart>,<number>,<date>) | 返回指定日期date加上指定的额外日期间隔number产生的新日期 |
DATEDIFF(<datepart>,<date1>,<date2>) | 返回两个指定日期在datepart方面的不同之处,即date2超过date1的差距值,其结果值是一个带有正负号的整数值 |
DATENAME(<datepart>,<date>) | 以字符串的形式返回日期的指定部分。此部分由由datepart来指定 |
DATEPART(<datepart>,<date>) | 以整数值的形式返回日期的指定部分。此部分由大datepart来指定 |
GETDATE() | 以DATETIME的缺省格式,返回系统当前的日期和时间 |
convert()函数转换日期、时间
Convert ( date_type [( length )] , expression ,style )
例如:
Select convert ( varchar ,getdate(), 8 ) as now_time