整理的SQL常用函数.docx
sql函数大全
一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)AVG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)AVG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DATE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY 返回当前日期的日期值7)CURRENT[FIRST TO LAST] 返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[FIRST TO LAST])返回经过调整的日期或日期时间值To_char函数将datetime和date值转化为字符值。
SQL函数汇总
SQL函数汇总***function(/*常用函数*/)***----统计函数----AVG --求平均值COUNT --统计数目MAX --求最大值MIN --求最小值SUM --求和--AVGuse panguselect avg(e_wage) as dept_avgWagefrom employeegroup by dept_id--MAX--求工资最高的员工姓名use panguselect e_namefrom employeewhere e_wage =(select max(e_wage)from employee)--STDEV()函数返回表达式中所有数据的标准差--STDEVP()函数返回总体标准差--VAR()函数返回表达式中所有值的统计变异数--VARP()函数返回总体变异数----算术函数----/***三角函数***/SIN(float_expressiοn) --返回以弧度表示的角的正弦COS(float_expressiοn) --返回以弧度表示的角的余弦TAN(float_expressiοn) --返回以弧度表示的角的正切COT(float_expressiοn) --返回以弧度表示的角的余切/***反三角函数***/ASIN(float_expressiοn) --返回正弦是FLOAT 值的以弧度表示的角ACOS(float_expressiοn) --返回余弦是FLOAT 值的以弧度表示的角ATAN(float_expressiοn) --返回正切是FLOAT 值的以弧度表示的角ATAN2(float_expressiοn1,float_expressiοn2)--返回正切是float_expressiοn1 /float_expres-sion2的以弧度表示的角DEGREES(numeric_expressiοn)--把弧度转换为角度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型RADIANS(numeric_expressiοn) --把角度转换为弧度返回与表达式相同的数据类型可为--INTEGER/MONEY/REAL/FLOAT 类型EXP(float_expressiοn) --返回表达式的指数值LOG(float_expressiοn) --返回表达式的自然对数值LOG10(float_expressiοn)--返回表达式的以10 为底的对数值SQRT(float_expressiοn) --返回表达式的平方根/***取近似值函数***/CEILING(numeric_expressiοn) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expressiοn) --返回<=表达式的最小整数返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expressiοn) --返回以integer_expressiοn 为精度的四舍五入值返回的数据--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expressiοn) --返回表达式的绝对值返回的数据类型与表达式相同可为--INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expressiοn) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() --返回值为π即3.1415926535897936RAND([integer_expressiοn]) --用任选的[integer_expressiοn]做种子值得出0-1 间的随机浮点数----字符串函数----ASCII() --函数返回字符表达式最左端字符的ASCII 码值CHAR() --函数用于将ASCII 码转换为字符--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() --函数把字符串全部转换为小写UPPER() --函数把字符串全部转换为大写STR() --函数把数值型数据转换为字符型数据LTRIM() --函数把字符串头部的空格去掉RTRIM() --函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置SOUNDEX() --函数返回一个四位字符码--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异--0 两个SOUNDEX 函数返回值的第一个字符不同--1 两个SOUNDEX 函数返回值的第一个字符相同--2 两个SOUNDEX 函数返回值的第一二个字符相同--3 两个SOUNDEX 函数返回值的第一二三个字符相同--4 两个SOUNDEX 函数返回值完全相同QUOTENAME() --函数返回被特定字符括起来的字符串/*select quotename('abc', '{') quotename('abc')运行结果如下----------------------------------{{abc} [abc]*/REPLICATE() --函数返回一个重复character_expressiοn 指定次数的字符串/*select replicate('abc', 3) replicate( 'abc', -2)运行结果如下----------- -----------abcabcabc NULL*/REVERSE() --函数将指定的字符串的字符排列顺序颠倒REPLACE() --函数返回被替换了指定子串的字符串/*select replace('abc123g', '123', 'def')运行结果如下----------- -----------abcdefg*/SPACE() --函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() (<expressiοn> AS <data_ type>[ length ])CONVERT() 函数语法如下CONVERT() (<data_ type>[ length ], <expressiοn> [, style])select cast(100+99 as char) convert(varchar(12), getdate())运行结果如下------------------------------ ------------199 Jan 15 2000----日期函数----DAY() --函数返回date_expressiοn 中的日期值MONTH() --函数返回date_expressiοn 中的月份值YEAR() --函数返回date_expressiοn 中的年份值DATEADD(<datepart> ,<number> ,<date>)--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间----系统函数----APP_NAME() --函数返回当前执行的应用程序的名称COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名DATALENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['database_name']) --函数返回数据库的编号DB_NAME(database_id) --函数返回数据库的名称HOST_ID() --函数返回服务器端计算机的名称HOST_NAME() --函数返回服务器端计算机的名称IDENTITY(<data_type>[, seed increment]) [AS column_name])--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE() --函数判断所给定的表达式是否为合理日期ISNULL(<check_expressiοn>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换ISNUMERIC() --函数判断所给定的表达式是否为合理的数值NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(<expressiοn1>, <expressiοn2>)--NULLIF 函数在expressiοn1 与expressiοn2 相等时返回NULL 值若不相等时则返回expressiοn1 的值。
SQL函数使用大全及示例使用方法汇总
SQL函数使用大全及示例使用方法汇总在SQL中,函数是一种操作数据的工具,能够将特定的操作应用于查询结果或表的列。
函数可以用于处理数据、执行计算和生成结果。
下面是一些常用的SQL函数及其示例使用方法:1.字符串函数:-CONCAT:将两个字符串连接在一起。
示例:SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;-SUBSTRING:返回一个字符串的子字符串。
示例:SELECT SUBSTRING(address, 1, 10) AS address FROM customers;-LENGTH:返回一个字符串的长度。
示例:SELECT LENGTH(product_name) AS name_length FROM products;2.数值函数:-SUM:计算一组数值的总和。
示例:SELECT SUM(price) AS total_price FROM orders;-AVG:计算一组数值的平均值。
示例:SELECT AVG(age) AS average_age FROM employees;-MAX:返回一组数值的最大值。
示例:SELECT MAX(salary) AS max_salary FROM employees;3.日期和时间函数:-NOW:返回当前日期和时间。
-DATE_FORMAT:格式化日期和时间。
示例:SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;-DATEDIFF:计算两个日期之间的天数差。
示例:SELECT DATEDIFF('2024-01-01', '2024-01-01') AS days_diff;4.条件函数:-IF:根据条件返回不同的值。
sql的系统函数
sql的系统函数SQL是一种用于管理和操作关系数据库的编程语言。
除了基本的查询、插入、更新和删除数据的功能之外,SQL还提供了许多系统函数,用于执行各种任务。
系统函数可以用来执行数学运算、字符串操作、日期和时间处理、数据类型转换等。
以下是一些常用的SQL系统函数:1.数学函数:-ABS(x):返回x的绝对值。
-CEILING(x):返回大于或等于x的最小整数。
-FLOOR(x):返回小于或等于x的最大整数。
-ROUND(x,d):返回x的四舍五入值,d是指定的小数位数。
2.字符串函数:- CONCAT(str1, str2, ...):连接多个字符串。
- LENGTH(str):返回字符串的长度。
- LOWER(str):将字符串转换为小写。
- UPPER(str):将字符串转换为大写。
- SUBSTRING(str, start, length):返回字符串的一部分,从start位置开始,长度为length。
3.日期和时间函数:-GETDATE(:返回当前日期和时间。
- DATEADD(interval, number, date):在给定日期上添加指定的时间间隔。
- DATEDIFF(interval, start_date, end_date):计算两个日期之间的时间间隔。
4.数据类型转换函数:- CAST(expression AS datatype):将表达式转换为指定的数据类型。
- CONVERT(datatype, expression, style):将表达式转换为指定的数据类型,并指定转换样式。
5.聚合函数:- COUNT(column_name):计算指定列中的行数。
- SUM(column_name):计算指定列的总和。
- AVG(column_name):计算指定列的平均值。
- MIN(column_name):返回指定列的最小值。
- MAX(column_name):返回指定列的最大值。
sql 函数大全 比较常用的一些函数整理
sql 函数大全比较常用的一些函数整理select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了。
left()是sql函数。
select 字段1 from 表1 where charindex('云',字段1)=1;字符串函数对二进制数据、字符串和表达式执行不同的运算。
此类函数作用于CHAR、VARCHAR、 BINARY、和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。
可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。
常用的字符串函数有:一、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。
在ASCII()函数中,纯数字的字符串可不用‘'括起来,但含其它字符的字符串必须用‘'括起来使用,否则会出错。
2、CHAR()将ASCII 码转换为字符。
如果没有输入0 ~ 255 之间的ASCII 码值,CHAR()返回NULL 。
3、LOWER()和UPPER()LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。
4、STR()把数值型数据转换为字符型数据。
STR (<float_expression>[,length[, <decimal>]])length 指定返回的字符串的长度,decimal 指定返回的小数位数。
如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;当length 小于小数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;当返回的字符串位数小于length ,左边补足空格。
整理几个常用的sql内部函数
1.Avg 计算平均值Example: SELECT AVG(PRSTAFF)FROM PROJECTWHERE DEPTNO ='D11'2.Count 计算符合条件的纪录行数Example1: SELECT COUNT(*)FROM EMPLOYEEWHERE SEX ='F'Example2: SELECT COUNT(DISTINCT WORKDEPT)FROM EMPLOYEEWHERE SEX='F'3.Max 返回一个数据集里的最大值Example: SELECT MAX(SALARY) /12FROM EMPLOYEE4.min 返回一个数据集里的最小值Example: SELECT MIN(SALARY) /12FROM EMPLOYEE5.SUM 求和EXAMPLE: SELECT SUM(BONUS)FROM EMPLOYEEWHERE JOB ='CLERK'6. ABS or ABSVAL 计算绝对值EXAMPLE: SELECT ABS(BONUS)FROM EMPLOYEEWHERE JOB ='CLERK'7. CEILING 小数位进位EXAMPLE: SELECT CEILING( 3.5),CEILING( 3.1),CEILING(-3.1),CEILING(-3.5),FROM TABLEXThis example returns:4.0 4.0 -3.0 -3.08.CONCAT 字符串连结EXAMPLE:SELECT CONCAT(FIRSTNME, LASTNAME) AS FULLNAME FROM AUTHOR11.substring or substr 字符串截取Example:SELECT * FROM PROJECTWHERE SUBSTR(PROJNAME,1,10) ='OPERATION '挑选字段PROJNAME前十位等于常量'OPERATION '的所有记录12.Round 四舍五入Example1:SELECT ROUND(873.726, 2),ROUND(873.726, 1),ROUND(873.726, 0),ROUND(873.726, -1),ROUND(873.726, -2),ROUND(873.726, -3),ROUND(873.726, -4)FROM TABLEX结果:0873.730 0873.700 0874.000 0870.000 0900.000 1000.000 0000.000Example2:SELECT ROUND( 3.5, 0),ROUND( 3.1, 0),ROUND(-3.1, 0),ROUND(-3.5, 0)FROM TABLEX结果:4.0 3.0 -3.0 -4.013.UCASE or UPPER 转换为大写字符串UCASE('abcdef') 结果为’ABCDEF’14. LOWER or LCASE 转换为小写字符串lower('aBcDef') 结果为’abcdef15.locate 返回源串在目标串出现的的一个位置EXAMPLESELECT LOCATE(' FF C','FF FF CCC',1) FROM CBB72116. POSITION or POSSTR 返回源串在目标串出现的的一个位置EXAMPLE1:半角情况SELECT POSITION('D' IN 'FFCD') FROM CBB721EXAMPLE2:混合情况SELECT POSSTR('FFC DSF ',' F ') FROM CBB721------------------------------------------------------------------CURTIME 返回系统时间CURDATE 返回系统日期DATE 返回一个日期型值EXAMPLE: DATE(‘1980-12-07’)DAY 返回参数的日期值部分EXAMPLE:DATE1等于2000-03-15DATE2等于1999-12-31DAY (DATE1-DATE2)结果15DAYOFMONTH 返回参数日期部分AMC等于’2006-01-01’DAYOFMONTH(AMC)结果1DAYOFWEEK 返回星期值1~7,1-星期日;7-星期六AMC等于’2006-01-01’DAYOFMONTH(AMC)结果1DAYOFYEAR 返回值1~366AMC等于’2006-02-01’DAYOFMONTH(AMC)结果32DAYS 返回参数日期与’0001-01-01’的天数差EXAMPLE:AMC1等于’2006-02-01’AMC2等于’2006-01-01’DAYS(AMC1)-DAYS(AMC2)结果31HOUR 返回参数小时部分,参数为时间或时间戳类型。
常用的sql函数
常⽤的sql函数⼀、字符函数1) LENGTH#获取参数值的字节个数SELECT LENGTH ('lala') ;结果: 42) CONCAT#拼接字符串SELECT CONCAT ('asd' , 'we' );结果: asdwe3) UPPER#将参数全部变为⼤写SELECT UPPER(' abcd' );结果: ABCD3) LOWER# 将参数全部变为⼩写SELECT LOWER(' ABCD' );结果: abcd4) SUBSTR#索引从1开始,返回指定位置及其之后的字符串SELECT SUBSTR( ' ABCD' , 2 );结果:BCD#截取从指定索引处(第⼆个参数)开始,获取索引位置及其后指定字符长度的字符串(第三个参数)SELECT SUBSTR( ' ABCD' , 1,3 );结果:ABC5) INSTR# 返回第⼆个参数在第⼀个参数中第⼀次出现的位置,若没有出现,则返回0SELECT INSTR('ABCD' , 'CD')结果: 3SELECT INSTR('ABCD' , 'E')结果: 06) TRIM#去除⾸尾指定的字符,若没有指定,则表⽰去除空格SELECT TRIM ( '#' , '###acd##sas###');结果: acd##sas7) LPAD#⽤指定的字符实现左填充指定长度,同时也是结果的最终长度SELECT LPAD( 'abc' , 4 , '#'');结果: #ABC8) RPAD#⽤指定的字符实现右填充指定长度,同时也是结果的最终长度SELECT LPAD( 'ABC' , 4 , '#');结果: ABC#SELECT LPAD( 'ABC' , 2 , '#');结果: AB9) REPLACE#替换所有的指定的字符串为另⼀个字符串SELECT REPLACE( 'ABCBCD' , 'BC' ,'#' );结果: A##D⼆、数学函数1) ROUND#四舍五⼊SELECT ROUND(-1.55);结果: -2#保留指定⼩数的位数SELECT ROUND (1.547,2);结果: 1.542) CEIL#向上取整,返回⼤于等于该参数的最⼩整数SELECT CEIL (-1.0002);结果: -13) FLOOR#向下取整,返回⼩于等于该参数的最⼤整数SELECT CEIL (9.99999);结果: 94) TRUNCATE#截断SELECT TRUNCATE (1.6699,2);结果: 1.665) MOD#取模SELECT MOD(-10,-3)结果: -1三、⽇期函数1) NOW#返回当前系统⽇期+时间SELECT NOW();2) CURDATE#返回当前系统时间,不包含时间SELECT CURDATE();3) CURTIME#返回当前时间,不包含⽇期SELECT CURTIME();4) MONTHNAME , DAYNAME 等#返回⽇期的英⽂名字SELECT DAYNAME(NOW());5) STR_TO_DATE#将字符串通过指定的格式转化为⽇期SELECT STR_TO_DATE('4-3#1992', '%m-%d#%Y');结果:1992-04-036) DATE_FORMAT#将⽇期转化为指定格式字符串SELECT DATE_FORMAT(NOW(), '%m#%d#%Y');结果: 04#27#2019三、其他函数1) SELECT VERSION()#获取sql的版本号2) SELECT DATABASE()#获取当前所在数据库名3)SELECT USER()#获取登陆⽤户名四、流程控制函数1) if#⼀共三个参数,若第⼀个参数代表的表达式值为true, 则执⾏第⼆个参数代表的表达式,否则执⾏第三个参数代表的表达式SELECT IF (10 > 5 , '⼤' , '⼩' );结果:⼤2) case⽤法⼀:#相当于switch caseCASE 要判断的字段或者表达式WHEN 常量1 THEN 要显⽰的值1或者与语句1WHEN 常量2 THEN 要显⽰的值2或者与语句2WHEN 常量3 THEN 要显⽰的值3或者与语句3ELSE 要显⽰的值x或者与语句xEND⽤法⼆:#相当于多重if#相当于switch caseCASEWHEN 条件1 THEN 要显⽰的值1或者与语句1 WHEN 条件2 THEN 要显⽰的值2或者与语句2 WHEN 条件3 THEN 要显⽰的值3或者与语句3 ELSE 要显⽰的值x或者与语句xEND。
sql标准函数库文档
sql标准函数库文档SQL字符串处理函数大全select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql 对应的函数就可以了。
left()是sql函数。
select 字段1 from 表1 where charindex('云',字段1)=1;字符串函数对二进制数据、字符串和表达式执行不同的运算。
此类函数作用于CHAR、V ARCHAR、BINARY、和V ARBINARY 数据类型以及可以隐式转换为CHAR 或V ARCHAR的数据类型。
可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。
常用的字符串函数有:一、字符转换函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。
在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
2、CHAR()将ASCII 码转换为字符。
如果没有输入0 ~ 255 之间的ASCII 码值,CHAR()返回NULL 。
3、LOWER()和UPPER()LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。
4、STR()把数值型数据转换为字符型数据。
STR ([,length[,]])length 指定返回的字符串的长度,decimal 指定返回的小数位数。
如果没有指定长度,缺省的length 值为10,decimal 缺省值为0。
当length 或者decimal 为负值时,返回NULL;当length 小于小数点左边(包括符号位)的位数时,返回length 个*;先服从length ,再取decimal ;当返回的字符串位数小于length ,左边补足空格。
sql语句常用的函数总结
sql语句常⽤的函数总结⼀、数据库的⼀般函数1.求和⼀般要去除null字段的值sum(NVL('字段',0));2. CASE WHEN ‘字段’='合计' THEN '合计' ELSE ‘字段’ END AS '别名'----------这个语法的含义和if else的意思⼀样3.sql语句⽚段:select '3' flag, 'all' aa, V_ORG_CODE_PRV, count(1) all_cnt, sum(case when cnt >=2 then 1 else 0 end) total_cntfrom (select V_ORG_CODE_PRV, v_cust_code, sum(cnt) cnt //统计客户的购买次数 from t_a //(cnt是该表的统计好的次数)group by V_ORG_CODE_PRV, v_cust_code //这⾥是分组的条件)group by V_ORG_CODE_PRVsum(case when cnt >=2 then 1 else 0 end) -----合计次数⼤于2的户数4.decode函数sql语句⽚段:DECODE(‘变量’,2,D_DEVELOPMENT_CUSTNUM+D_LOYAL_CUSTNUM,3,D_LOYAL_CUSTNUM,4,D_SELFCIG_CUSTNUM_4+D_SELFCIG_CUSTNUM_5,5,D_SELFCIG_CUSTNUM_5)解释:如果该--‘变量’-- 为2,那么就选择2后⾯的为该字段的值,,如果为3,,那就选择3后⾯的值为该字段的值。
以此类推-----(decode(b.zhs,0,0,a.jhhs2*1.000/b.zhs))*100 sgl,--decode函数的作⽤是,b.zhs如果为0,则该字段的值为0,不是为(a.jhhs2*1.000/b.zhs)5.DB2的⾏转列函数的使⽤案例select listagg(BASICS_CLASS_NAME,',') within group(order by a ) cla from tem2 ---listagg(字段,‘分隔符’)6.DB2的递归⽰例WITH base (BASICS_CLASS_ID, PARENT_BASICS_CLASS_ID, BASICS_CLASS_CODE, BASICS_CLASS_NAME, PATH , PATH_NAME)--------------//⾥⾯是字段,和查询的字段要⼀⼀对应AS (SELECT BASICS_CLASS_ID,PARENT_BASICS_CLASS_ID,BASICS_CLASS_CODE,BASICS_CLASS_NAME,cast(BASICS_CLASS_ID as VARCHAR(2000)) PATH,cast(BASICS_CLASS_NAME as VARCHAR(2000)) PATH_NAMEFROM PURCHASEMGR.CG_BASICS_CLASSWHERE IN_USED = '1' AND PARENT_BASICS_CLASS_ID IS NULL OR PARENT_BASICS_CLASS_ID = ''UNION ALLSELECT c.BASICS_CLASS_ID,c.PARENT_BASICS_CLASS_ID,c.BASICS_CLASS_CODE,c.BASICS_CLASS_NAME,B.PATH || '/' || c.BASICS_CLASS_ID PATH,B.PATH_NAME || '/' || c.BASICS_CLASS_NAME PATH_NAMEFROM PURCHASEMGR.CG_BASICS_CLASS c, base bWHERE c.IN_USED = '1' AND c.PARENT_BASICS_CLASS_ID = b.BASICS_CLASS_ID),temp as(select * from base)select * from temp⼆、数据库的分析函数1.分析函数和聚合函数的不同之处是什么?普通的聚合函数⽤group by分组,每个分组返回⼀个统计值,⽽分析函数采⽤partition by分组,并且每组每⾏都可以返回⼀个统计值。
sql函数大全
sql函数⼤全SQL函数⼤全收藏⼀、--聚合函数use pubsgoselect avg(distinct price) --算平均数from titleswhere type='business'gouse pubsgoselect max(ytd_sales) --最⼤数from titlesgouse pubsgoselect min(ytd_sales) --最⼩数from titlesgouse pubsgoselect type,sum(price),sum(advance) --求和from titlesgroup by typeorder by typegouse pubsgoselect count(distinct city) --求个数from authorsgouse pubsgoselect stdev(royalty) --返回给定表达式中所有值的统计标准偏差from titlesgouse pubsgoselect stdevp(royalty) --返回表达式中所有制的填充统计标准偏差from titlesgouse pubsgoselect var(royalty) --返回所有值的统计⽅差from titlesgouse pubsgoselect varp(royalty) --返回所有值的填充的统计⽅差from titlesgo⼆、--数学函数select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) --其中rand是获得⼀个随机数三、--配置函数SELECT @@VERSION --获取当前数据库版本SELECT @@LANGUAGE --当前语⾔四、--时间函数select getdate() as 'wawa_getdate' --当前时间select getutcdate() as 'wawa_getutcdate' --获取utc时间select day(getdate()) as 'wawa_day' --取出天select month(getdate()) as 'wawa_month' --取出⽉select year(getdate()) as 'wawa_year' --取出年select dateadd(d,3,getdate()) as wawa_dateadd --加三天,注意'd'表⽰天,'m'表⽰⽉,'yy'表⽰年,下⾯⼀样select datediff(d,'2004-07-01','2004-07-15') as wawa_datediff --计算两个时间的差select datename(d,'2004-07-15') as wawa_datename --取出时间的某⼀部分select datepart(d,getdate()) as wawa_datepart --取出时间的某⼀部分,和上⾯的那个差不多五、--字符串函数select ascii(123) as '123',ascii('123') as '"123"',ascii('abc') as '"abc"' --转换成ascii码select char(123),char(321),char(-123) --根据ascii转换成字符select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc') --转换⼤⼩写select str(123.45,6,1), str(123.45,2,2) --把数值转换成字符串select ltrim(' "左边没有空格"') --去空格select rtrim('"右边没有空格" ') --去空格select ltrim(rtrim(' "左右都没有空格" ')) --去空格select left('sql server',3),right('sql server',6) --取左或者取右use pubsselect au_lname,substring(au_fname,1,1) --取⼦串from authorsorder by au_lnameselect charindex('123','abc123def',2) --返回字符串中指定表达式的起始位置select patindex('123','abc123def'),patindex('%123%','abc123def') --返回表达式中某模式第⼀次出现的起始位置select quotename('abc','{'),quotename('abc') --返回由指定字符扩住的字符串select reverse('abc'),reverse('上海') --颠倒字符串顺序select replace('abcdefghicde','cde','xxxx') --返回呗替换了指定⼦串的字符串select space(5),space(-2) --返回由重复的空格组成的字符串六、--系统函数select host_name() as 'host_name',host_id() as 'host_id',user_name() as 'user_name',user_id() as 'user_id',db_name() as 'db_name'七、--变量的定义及使⽤--声明局部变量declare @mycounter intdeclare @last_name varchar(30),@fname varchar(20),@state varchar(2) --⼀下声明多个变量--给变量赋值use northwindgodeclare @firstnamevariable varchar(20),@regionvariable varchar(30)set @firstnamevariable='anne' --可以⽤set,也可以⽤select给变量赋值,微软推荐⽤set,但select在选择⼀个值直接赋值时很有⽤set @regionvariable ='wa'select lastname,firstname,title --⽤声明并赋值过的变量构建⼀个Select语句并查询from employeeswhere firstname= @firstnamevariable or [email=region=@regionvariable]region=@regionvariable[/email]go--全局变量select @@version --返回数据库版本select @@error --返回最后的⼀次脚本错误select @@identity --返回最后的⼀个⾃动增长列的id⼋、--while,break,continue的使⽤--⾸先计算所有数的平均价格,如果低于30的话进⼊循环让所有的price翻倍,--⾥⾯⼜有个if来判断如果最⼤的单价还⼤于50的话,退出循环,否则继续循环,知道最⼤单价⼤于50就break出循环use pubsgowhile (select avg(price) from titles) <$30beginupdate titlesset price=price*2select max(price) from titlesif(select max(price) from titles) >$50breakelsecontinueendprint 'too much for the marker to bear'九、--事务编程经典例⼦--begin transaction是开始事务,commit transaction是提交事务,rollback transaction是回滚事务--这个例⼦是先插⼊⼀条记录,如果出现错误的话就回滚事务,也就是取消,并直接return(返回),如果没错的话就commit 提交这个事务了哦--上⾯的那个return返回可以返回⼀个整数值,如果这个值是0的话就是执⾏的时候没出错,如果出错了就是⼀个负数,--这个return也可以⽤在存储过程中,可⽤⽤ exec @return_status= pro_name来获取这个值use pubsgobegin tran mytraninsert into stores(stor_id,stor_name)values('333','my books')goinsert into discounts(discounttype,stor_id,discount)values('清仓甩卖','9999',50.00)if @@error<>0 [email=--@@error]--@@error[/email]返回最后执⾏的 Transact-SQL 语句的错误代码如果语句执⾏成功,则 @@ERROR 设置为 0。
sql函数大全
一、内部函数1、内部合计函数1)COUNT(*)返回行数2)COUNT(DISTINCT COLNAME)返回指定列中唯一值的个数3)SUM(COLNAME/EXPRESSION)返回指定列或表达式的数值和;4)SUM(DISTINCT COLNAME)返回指定列中唯一值的和5)AVG(COLNAME/EXPRESSION)返回指定列或表达式中的数值平均值6)AVG(DISTINCT COLNAME)返回指定列中唯一值的平均值7)MIN(COLNAME/EXPRESSION)返回指定列或表达式中的数值最小值8)MAX(COLNAME/EXPRESSION)返回指定列或表达式中的数值最大值2、日期与时间函数1)DAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当月几号2)MONTH(DATE/DATETIME EXPRESSION)返回指定表达式中的月份3)YEAR(DATE/DATETIME EXPRESSION)返回指定表达式中的年份4)WEEKDAY(DATE/DATETIME EXPRESSION)返回指定表达式中的当周星期几5)DATE(NOT DATE EXPRESSION)返回指定表达式代表的日期值6)TODAY 返回当前日期的日期值7)CURRENT[FIRST TO LAST] 返回当前日期的日期时间值8)COLNAME/EXPRESSION UNITS PRECISION 返回指定精度的指定单位数9)MDY(MONTH,DAY,YEAR)返回标识指定年、月、日的日期值10)DATETIME(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的日期时间值11)INTERVAL(DATE/DATETIME EXPRESSION)FIRST TO LAST 返回表达式代表的时间间隔值12)EXTEND(DATE/DATETIME EXPRESSION,[FIRST TO LAST])返回经过调整的日期或日期时间值To_char函数将datetime和date值转化为字符值。
sql常用函数整理
sql常⽤函数整理SQL中包含以下七种类型的函数:聚合函数:返回汇总值。
转型函数:将⼀种数据类型转换为另外⼀种。
⽇期函数:处理⽇期和时间。
数学函数:执⾏算术运算。
字符串函数:对字符串、⼆进制数据或表达式执⾏操作。
系统函数:从数据库返回在SQLSERVER中的值、对象或设置的特殊信息。
⽂本和图像函数:对⽂本和图像数据执⾏操作。
⼀、聚合函数(它对其应⽤的每个⾏集返回⼀个值。
)AVG(表达式) 返回表达式中所有的平均值。
仅⽤于数字列并⾃动忽略NULL值。
COUNT(表达式) 返回表达式中⾮NULL值的数量。
可⽤于数字和字符列。
COUNT(*) 返回表中的⾏数(包括有NULL值的列)。
MAX(表达式) 返回表达式中的最⼤值,忽略NULL值。
可⽤于数字、字符和⽇期时间列。
MIN(表达式) 返回表达式中的最⼩值,忽略NULL值。
可⽤于数字、字符和⽇期时间列。
SUM(表达式) 返回表达式中所有的总和,忽略NULL值。
仅⽤于数字列。
⼆、转换函数有CONVERT和CAST两种。
CONVERT(data_type[(length)], expression [, style])例: Select convert(varchar(10) ,stuno) as stuno,stuname from studentCAST( expression AS data_type )例: Select cast(stuno as varchar(10)) as stuno,stuname from studentCast和Convert的区别Cast 和Convert都是⽤来将⼀种数据类型的表达式转换为另⼀种数据类型的表达式。
CAST 和 CONVERT 提供相似的功能,只是语法不同。
在时间转化中⼀般⽤到convert,因为它⽐cast多加了⼀个style,可以转化成不同时间的格式。
三、⽇期函数由于不能直接执⾏算术函数,所以⽇期函数就⼗分有⽤。
SQL函数大全
SQL函数大全_水木年华2008-05-28 15:24行集函数ContainsTable;FreeTextTable;OpenDataSource;OpenQuery;OpenRowSetOpenXML聚合函数AVG;MAX;BINARY_CHECKSUM;MIN;CHECKSUM;SUM;CHECKSUM_AGG;STDEV;COUNT;STDEVP;COUNT_BIG;VAR;GROUPING;VARP;1.字符串函数长度与分析用datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格substring(expression,start,length) 不多说了,取子串right(char_expr,int_expr) 返回字符串右边int_expr个字符字符操作类upper(char_expr) 转为大写lower(char_expr) 转为小写ltrim(char_expr) 取掉左空格引用内容select ltrim(' ')rtrim(char_expr) 取掉右空格引用内容select ltrim(' ')Left(char_expr,inte_expr)返回从字符串左边开始指定个数的字符;引用内容select left('',5)显示结果:http:Right(char_expr,inte_expr)返回从字符串右边开始指定个数的字符;select right('',17)显示结果:SubString(expr,star,length)返回字符,binary,text或image表达式的一部分;引用内容use pubsgoselect au_Lname,substring(au_fname,1,1) from authorsQuoteName('Char_str'[,'quote_char']')返回带有分隔各符的Unicode字符串;引用内容select quotename('')显示结果:[]Replicate(char_expr,int_expr)复制字符串int_expr次引用内容select replicate(' ',3)显示结果: Reverse(char_expr) 反转字符串引用内容select reverse(''),reverse('change')显示结果:nc.214-egnahc.www egnahcReplace('Str_Expr1','Str_Expr2','Str_Expr3')用3个表达式替换第1个字符串表达式中出现的所有第2个给定字符串表达式.示例:引用内容Select replace ('abcdefghicde' ,'cde','xxx')输出结果:abxxxfghixxxspace(int_expr) 生成int_expr个空格引用内容select space(5)stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从start开始的length个字符用char_expr2代替示例:select stuff ('Mother',3,4,'nkey')输出结果:Monkeyascii(char) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符字符串查找CharIndex(char_expr,expression) 返回char_expr的起始位置引用内容select charindex('color','i like color')显示结果:8PatIndex("%pattern%",expression) 返回指定模式的起始位置,否则为0引用内容select patindex('%color%','i like color')显示结果:8Soundex(Char_Expr)返回由于4个字符组成的代码(Soundex)以评估2个字符串的相似性;引用内容select soundex('everybody'),soundex('everything')输出结果:E210 E210select soundex('everybody'),soundex('change')输出结果:E210 C462Difference(Char_Expr,Char_Expr)以整数返回两个字符表达式的Soundex值之差;引用内容select difference('everybody','everything')输出结果:4select difference('everybody','change')输出结果:12.数学函数abs(numeric_expr) 求绝对值ceiling(numeric_expr) 取大于等于指定值的最小整数exp(float_expr) 取指数floor(numeric_expr) 小于等于指定值得最大整数pi() 3.1415926.........power(numeric_expr,power) 返回power次方rand([int_expr]) 随机数产生器round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入sign(int_expr) 根据正数,0,负数,,返回+1,0,-1sqrt(float_expr) 平方根3.日期函数dateadd(datepart,number,date_expr) 返回日期加上 number引用内容select dateadd(day,21,'1991-07-03')输出结果:1991-07-24 00:00:00.000datediff(datepart,startdate.enddate) 日期差引用内容select datediff(day,'2007-03-26','2007-4-18')输出结果:23datename(datepart,date_expr) 返回名称如 June引用内容select datename(m,'2007-04-18')输出结果:04datepart(datepart,date_expr) 取日期一部份引用内容select datepart(m,'2007-04-18')输出结果:4day(date)返回代表指定日期的天的日期部分的整数.此函数等价于datepart(dd,date);引用内容select day('2007-04-18')输出结果:18getdate() 返回当前日期;GetUTCdate()返回表示当前UTC时间;Month(date)返回代表指定日期月份的整数,等价于datepart(MM,date);引用内容select Month('2007-04-18')输出结果:4Year(date)返回代表指定日期年份的整数,等价于datepart(YY,date);引用内容select Year('2007-04-18')输出结果:2007上述函数中datepart的写法,取值和意义yy 1753-9999 年份qq 1-4 刻mm 1-12 月dy 1-366 日dd 1-31 日wk 1-54 周dw 1-7 周几hh 0-23 小时mi 0-59 分钟ss 0-59 秒ms 0-999 毫秒转换函数Cast(Expr AS Date_Type)convert(data_type[(length)],Expression[,style])4.系统函数APP_Name()返回当前的应用程序名称;Coalesce(Expr[,...n])返回其参数中第一个非空表达式;示例:引用内容Delare @x char,@y char(10),@ddatetimeset @y=''set @d=getdate()select Coalesce (@x,@y,convert(char(20),@d))输出结果:Col_Length('table','column')返回列的定义长度(以字节为单位)Col_Name(table_id,Column_id)返回数据库列的名称;引用内容use northwindset nocount offselect col_name((object_id('employees')),3)输出结果:FirstNameDataLength(Expr)返回任何表达式所占用的字节;DB_ID(['database_name'])返回数据库标识(ID)号;DB_NAME(database_id)返回数据库名;FormatMessage(msg_number,param_value[,...n])格式化信息处理Getansinull(['database'])返回会话的数据库的默认为空型;引用内容use pubsgoselect getansinull('pubs')输出结果:1Host_id()返回工作站标识号;引用内容declare @hostid char(8)select @hostid=host_id()print @hostidHost_name()返回服务器端计算机名;引用内容declare @hostname char(20)select @hostname=host_name()print @hostnameIdentity(data_type[,seed,increment]) AS Column_name用在带有INTO TABLE子句的Select语句中,把标识列插入到新表中;IDENT_INCR('table_or_view')返回增量值;IDENT_SEED('table_or_view)返回种子值;Index_Col('table',index_id,key_id)返回索引列名称;Isdate(expr)确定输入表达式是否为有效日期;引用内容declare @x char(12)set @x='4/18/2007'selectisdate(@x),isdate('2007-04-18 12:00am'),isdate('2007418'),isdate('18/4/07')输出结果:1 1 0 1ISnull(check_expr,replacement_value)使用指定的替换值替换Null;引用内容use pubsgoselect avg(isnull(price,$10.00))from titles输出结果:14.2366IsNumeric(Expr)确定表达式是否为一个有效的数字类型;引用内容select isnumeric('412')显示结果:1select isnumeric('change412')显示结果:0NewID()创建uniqueidentifier类型的惟一值;NullIf(Expr,Expr)如果两个指定的表达式相等,则返回空值;引用内容declare @x varchar(20),@y char(20) ,@z char(20)select @x='sql',@y='sql',@z='1'select nullif(@x,@y),nullif(@x,@z) 显示结果:null sqlsuser_name() 用户登录名user_name() 用户在数据库中的名字user 用户在数据库中的名字show_role() 对当前用户起作用的规则object_name(obj_id) 数据库对象名valid_name(char_expr) 是否是有效标识符。
SQL函数函数大全
SQL函数函数⼤全1:replace 函数第⼀个参数你的字符串,第⼆个参数你想替换的部分,第三个参数你要替换成什么select replace('lihan','a','b')-----------------------------lihbn(所影响的⾏数为 1 ⾏)=========================================================2:substring函数第⼀个参数你的字符串,第⼆个是开始替换位置,第三个结束替换位置select substring('lihan',0,3);-----li(所影响的⾏数为 1 ⾏)=========================================================3:charindex函数第⼀个参数你要查找的char,第⼆个参数你被查找的字符串返回参数⼀在参数⼆的位置select charindex('a','lihan')-----------4(所影响的⾏数为 1 ⾏)===========================================================4:ASCII函数返回字符表达式中最左侧的字符的 ASCII 代码值。
select ASCII('lihan')-----------108(所影响的⾏数为 1 ⾏)================================================================5:nchar函数根据 Unicode 标准的定义,返回具有指定的整数代码的 Unicode 字符。
参数是介于 0 与 65535 之间的正整数。
如果指定了超出此范围的值,将返回 NULL。
select nchar(3213)----unicode字符(所影响的⾏数为 1 ⾏)=========================================================6:soundex返回⼀个由四个字符组成的代码 (SOUNDEX),⽤于评估两个字符串的相似性。
《SQL常用语句》word版
--语句功能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域ALTER DOMAIN --改变域定义DROP DOMAIN --从数据库中删除一个域--数据控制GRANT --授予用户访问权限DENY --拒绝用户访问REVOKE --解除用户访问权限--事务控制COMMIT --结束当前事务ROLLBACK --中止当前事务SET TRANSACTION --定义当前事务数据访问特征--程序化SQLDECLARE --为查询设定游标EXPLAN --为查询描述数据访问计划OPEN --检索查询结果打开一个游标FETCH --检索一行查询结果CLOSE --关闭游标PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句DESCRIBE --描述准备好的查询---局部变量declare @id char(10)--set @id = '10010001 'select @id = '10010001 '---全局变量---必须以@@开头--IF ELSEdeclare @x int @y int @z intselect @x = 1 @y = 2 @z=3if @x > @yprint 'x > y ' --打印字符串'x > y ' else if @y > @zprint 'y > z 'else print 'z > y '--CASEuse panguupdate employeeset e_wage =casewhen job_level = ’1’ then e_wage*1.08 when job_level = ’2’ then e_wage*1.07 when job_level = ’3’ then e_wage*1.06else e_wage*1.05end--WHILE CONTINUE BREAKdeclare @x int @y int @c intselect @x = 1 @y=1while @x < 3beginprint @x --打印变量x 的值while @y < 3beginselect @c = 100*@x + @yprint @c --打印变量c 的值select @y = @y + 1endselect @x = @x + 1select @y = 1end--W AITFOR--例等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay ’01:02:03’select * from employee--例等到晚上11 点零8 分后才执行SELECT 语句waitfor time ’23:08:00’select * from employee。
SQL函数汇总【精选篇】
SQL函数汇总【精选篇】1.SQL:select abs(-1) valueO:select abs(-1) value from dual2.取整(⼤)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(⼩)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五⼊S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.23466.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 18.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平⽅S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------14.S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1()16.Asin,Acos,Atan,Atan2 返回弧度17.弧度⾓度互换(SQLServer,不知道)DEGREES:弧度-〉⾓度RADIANS:⾓度-〉弧度---------数值间⽐较18. 求集合最⼤值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最⼩值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间⽐较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual23.⼦串位置 --返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual23.模糊⼦串的位置 --返回2,参数去掉中间%则返回7S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6 24.求⼦串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.⼦串代替返回aijklmnefS:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.⼦串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.⼤⼩写转换 lower,upper29.单词⾸字母⼤写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第⼀个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第⼀个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发⾳相似性⽐较(这两个单词返回值⼀样,发⾳相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dualSQLServer中⽤SELECT DIFFERENCE('Smithers', 'Smythers') ⽐较的差返回0-4,4为同⾳,1最⾼--------------⽇期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后⼏⽇直接与整数相加减37.求⽇期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual39.取⽇期时间的其他部分S:DATEPART 和 DATENAME 函数(第⼀个参数决定)O:to_ 第⼆个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O⽆效)dayofyear dy, y (O表星期)day dd, d (d O⽆效)week wk, ww (wk O⽆效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S⽆效)minute mi, n (n O⽆效)second ss, s (s O⽆效)millisecond ms (O⽆效)----------------------------------------------40.当⽉最后⼀天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某⼀天(⽐如星期⽇)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) valueO:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;43.求两⽇期某⼀部分的差(⽐如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接⽤两个⽇期相减(⽐如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的⽇期(⽐如分钟)S:select dateadd(mi,8,getdate()) valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT ⼤西洋BST BDT ⽩令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMTHST HDT —夏威夷标准时间MST MDT ⼭区标准时间NST 标准时间PST PDT 太平洋标准时间YST YDT YUKON标准时间Oracle⽀持的字符函数和它们的等价函数:函数 Oracle Microsoft SQL Server把字符转换为ASCII ASCII ASCII字串连接 CONCAT (expression + expression)把转换为字符 CHR CHAR返回字符串中的开始字符(左起) INSTR CHARINDEX把字符转换为⼩写 LOWER LOWER把字符转换为⼤写 UPPER UPPER填充字符串的左边 LPAD N/A清除开始的空⽩ LTRIM LTRIM清除尾部的空⽩ RTRIM RTRIM字符串中的起始模式(pattern) INSTR PATINDEX多次重复字符串 RPAD REPLICATE字符串的语⾳表⽰ SOUNDEX SOUNDEX重复空格的字串 RPAD SPACE从数字数据转换为字符数据 TO_CHAR STR⼦串 SUBSTR SUBSTRING替换字符 REPLACE STUFF将字串中的每个词⾸字母⼤写 INITCAP N/A翻译字符串 TRANSLATE N/A字符串长度 LENGTH DATELENGTH or LEN列表中最⼤的字符串 GREATEST N/A列表中最⼩的字符串 LEAST N/A如果为NULL则转换字串 NVL ISNULL⽇期函数函数 Oracle Microsoft SQL Server⽇期相加 (date column +/- value) orADD_MONTHS DATEADD两个⽇期的差 (date column +/- value) orMONTHS_BETWEEN DATEDIFF当前⽇期和时间 SYSDATE GETDATE()⼀个⽉的最后⼀天 LAST_DAY N/A时区转换 NEW_TIME N/A⽇期后的 NEXT_DAY N/A代表⽇期的字符串 TO_CHAR DATENAME代表⽇期的整数 TO_NUMBER(TO_CHAR)) DATEPART⽇期舍⼊ ROUND CONVERT⽇期截断 TRUNC CONVERT字符串转换为⽇期 TO_DATE CONVERT如果为NULL则转换⽇期 NVL ISNULL函数 Oracle Microsoft SQL Server数字转换为字符 TO_CHAR CONVERT字符转换为数字 TO_NUMBER CONVERT⽇期转换为字符 TO_CHAR CONVERT字符转换为⽇期 TO_DATE CONVERT16进制转换为2进制 HEX_TO_RAW CONVERT2进制转换为16进制 RAW_TO_HEX CONVERT其它⾏级别的函数函数 Oracle Microsoft SQL Server返回第⼀个⾮空表达式 DECODE COALESCE当前序列值 CURRVAL N/A序列值 NEXTVAL N/A如果exp1 = exp2, 返回null DECODE NULLIF⽤户登录账号ID数字 UID SUSER_ID⽤户登录名 USER SUSER_NAME⽤户数据库ID数字 UID USER_ID⽤户数据库名 USER USER_NAME当前⽤户 CURRENT_USER CURRENT_USER⽤户环境(audit trail) USERENV N/A在CONNECT BY⼦句中的级别 LEVEL N/A合计函数函数 Oracle Microsoft SQL ServerAverage AVG AVGCount COUNT COUNTMaximum MAX MAXMinimum MIN MINStandard deviation STDDEV STDEV or STDEVPSummation SUM SUMVariance VARIANCE VAR or VARPOracle还有⼀个有⽤的函数EXTRACT,提取并且返回⽇期时间或时间间隔表达式中特定的时间域: EXTRACT(YEAR FROM ⽇期)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、STUFF 函数create table test (id ini, value varchar(lO)) insert into test values (' 1',' aa/) insert into test values ('1' ,' bb') insert into test values (' 2',' aaa*) insert into test values (' 2',' bbb') insert into test values (' 2',' ccc') insert into test values (' 3',' aa/) insert into test values (' 4',' bb')select * from testselect id, [values]二stuf f ((select + [values] from test t where id = test .id for xmlpath(”)),1 , 1 ,八)from testgroup by idstuff(param1, startlndex, Iongth, param2)说明:将paraml中自startTndex (SQL中都是从1开始,而非0起,删除length个字符,然后用param2 替换删掉的字符。
*/迢结果也消息id values3&&4bbid values,bb2 2,bbb3 344b二、C OUNT 函数COUNT()函数用于返回一个列内所有非空值的个数,这是一个整型值。
由于COUNT(*)函数会忽略NULL值,所以这个查询的结果是2。
三、S UMO®数SUM()函数是最常用的聚合函数么一,它的功能很容易理解:和AVG()函数一样,它用于数值数据类型,返回一个列范围内所有非空值的总和。
四、C AST()函数CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。
以下例子用于将文本字符串‘123,转换为整型:SELECT CAST('123' AS int)返回值是整型值123。
如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?SELECT CAST('123.4* AS int)CAST()函数和CONVERT0函数都不能执行四舍五入或截断操作。
由于123.4不能用int数据类型来表示,所以对这个函数调用将产生一个错误。
Server: Msg 245, Level 16, State 1, Line 1Syn tax error con verting the varchar value'123.4' to a column of data type int.在将varchar值T234转换成数据类型int时失败。
要返回一个合法的数值,就必须使用能处理这个值的数据类型。
对于这个例子,存在多个可用的数据类型。
如果通过CAST()函数将这个值转换为decimal类型,需要首先定义decimal 值的精度与小数位数。
在本例中,精度与小数位数分别为9与2。
精度是总的数字位数,包括小数点左边和右边位数的总和。
而小数位数是小数点右边的位数。
这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。
SELECT CAST('123.4* AS decimal®,2))decimal数据类型在结果网格中将显示有效小数位:123.40精度和小数位数的默认值分别是18与0。
如果在decimal类型中不提供这两个值,SQL Server 将截断数字的小数部分,而不会产生错误。
SELECT CAST('123.4' AS decimal)结果是一个整数值:123五、C ONVERT0函数対于简单类型转换,CONVERT。
函数和CAST()函数的功能相同,只是语法不同。
CAST()W数一般更容易使用,其功能也更简单。
CONVERT0函数的优点是可以格式化日期和数值,它需要两个参数:第1个是目标数据类型,第2个是源数据。
CONVERT0函数还具有一些改进的功能,它可以返回经过格式化的字符串值,且可以把日期值格式化成很多形式。
有28种预定义的符合各种国际和特殊要求的日期与时间输出格式。
六、S TR()函数这是一个将数字转换为字符串的快捷函数。
这个函数有3个参数:数值、总长度和小数位数。
如果数字的整数位数和小数位数(要加上小数点占用的一个字符)的总和小于总长度,对结果中左边的字符将用空格填充。
在下面第1个例子中,包括小数点在内一共是5个字符。
结果显示在网格屮,显然左边的空格被填充了。
这个调用指定,总长度为8个字符,小数位为4 位:SELECT STR(123.4, 8, 4)结果值的右边以0填充:123.4000□ 下面给函数传递了一个10字符的值,并指定结果包含8个字符,有4个小数位:SELECT STR(123.456789, & 4) 只有将这个结果截断才能符合要求。
STR()函数对最后一位进行四舍五入:123.4568。
现在,如果为函数传递数字1,并指定结果包含6个字符,有4个小数位,STR()函数将用0补足右边的空位:SELECT STR(1, 6, 4) 1.0000然而,如果指定的总长度大于整数位数、小数点和小数位数之和,结果值的左边将用空格补齐:SELECT STR(1, 6, 4) 1.0000 SELECT STR(1, 12,4)1.0000remove()是删除指定元素。
removeAII()是删除一个特定集合内所包含的元素。
七、DATENAME返回代表指定口期的指定口期部分的字符串。
语法DATENAME ( datepart, date )参数datepart是指定应返回的口期部分的参数。
下表列出了Microsoft® SQL Serve严识别的日期部分和缩写。
日期部分缩写year yy, yyyyquarter qq, qmonth mm, mdayofyear dy, yday dd, dweek wk, wwweekday dwHour hhminute mi, nsecond SS, Smillisecond ms八、DATEADD()函数DATEADD()函数用于在tl期/时间值上加上日期单位间隔。
比如,要得到2007年4月29日起90天后的日期,可以使用下列语句:SELECT DATEADD(DAE 90, '4-29-2007')结果:2007-07-28 00:00:00.000可以把下表的值作为时间间隔参数传递给DATEADDO函数。
date part缩写year yyyyyyquarter qq,qmonth mramdayofyear如yday dddweek wk wwweekday dw, whnur hhminute mtnsecondmillisecond msmicrosecond mcsnanosecond ns在下面列出的例子中,我们使用和上一个例子一样的日期,并且在这些例子中还包含了时间数据。
每个操作的结果将显示在查询的下一行中。
18年后:SELECT DATEADDfYEAR, 18, '4-29-1988 10:30 AM') 2006-04-29 10:30:00.00018年前:SELECT DATEADDfYX -18, '4-29-1988 10:30 AM') 1970-04-29 10:30:00.0009000秒后:SELECT DATEADDfSECOND, 9000, '4-29-1988 10:30 AM1) 1988-04-29 13:00:00.0009000000毫秒前:SELECT DATEADD(MS厂9000000, *4-29-1988 10:30 AM') 1988-04-29 08:00:00.000可以将CONVERT()函数和DATEADDO函数组合在一起,來对1989年9月8日9个月前的口期值进行格式化。
SELECT CONVERT(varchar(20), DATEADD(M厂9, *9-8-1989'), 101) 12/08/1988这将返回一个可变长度的字符值,比前面例子结果中的默认日期更易容易理解。
这是一个函数嵌套调用,DATEADDO函数的返回值(一个DateTime类型的值)被作为值参数传递给CONVERT0函数。
九、DATEPART()与DATENAMEf)函数这两个函数用于返回datetime或者shortdatetime值的日期部分。
DATEPART()函数返回一个整型值;DATENAME()函数返回一个包含描述性文字的字符串。
比如,将日期4-29-1988传递给DATEPARTO函数,如指定返回月份值,则返回数字4: SELECT DATEPART(MONTH? *4-29-1988')而使用相同的参数,DATENAMEO函数返回04 (这取决于你的机器的本地语言,如果是英文版,那么将返回April):SELECT DATENAMEfMONTH, '4-29-1988')这两个函数都接收和DATEADD0函数一样的时间间隔参数常量。
十、DATEDIFFf)函数DATEADD()和DATEDIFFf)函数可以看作一对表兄弟,有点像乘法与除法。
在等式的两端有4 个元素:起始日期、吋间间隔(datepart).差值和最终日期。
如果己知其中的三个值,就可以求出第4个值。
如果在DATEADD0函数中使用起始日期、一个整型值和一个时间间隔,就可返回与起始日期相关的最终日期值。
如果提供了起始日期、时间间隔和最终FI期,DATEDIFFf)函数就可以返回差值。
SELECT DATEDIFF(MONTH, '9-3-1939', '10-17-1991') 结果是25 个月。
如果以日期为单位呢?SELECT DATEDIFF(DA\: 98-1989: '10-17-1991') 结果是769 天。
1996年7月2日和1997年8月4日之间差几个星期?SELECT DATEDIFF(WEEK, 7-2-1996;‘841997’)57 星期。