当前位置:文档之家› sql常用函数

sql常用函数

sql常用函数
sql常用函数

一、关系运算:

1. 等值比较: =

语法:A=B

操作类型:所有基本类型

描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where 1=1;

2. 不等值比较: <>

语法: A <> B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where 1 <> 2;

3. 小于比较: <

语法: A < B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于表达式B,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where 1 < 2;

4. 小于等于比较: <=

语法: A <= B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于或者等于表达式B,则为TRUE;

否则为FALSE

举例:

hive> select 1 from lxw_dual where 1 <= 1;

5. 大于比较: >

语法: A > B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于表达式B,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where 2 > 1;

6. 大于等于比较: >=

语法: A >= B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于或者等于表达式B,则为TRUE;

否则为FALSE

举例:

hive> select 1 from lxw_dual where 1 >= 1;

注意:String的比较要注意(常用的时间比较可以先to_date之后再比较)

hive> select * from lxw_dual;

OK

2011111209 00:00:00 2011111209

hive> select a,b,ab,a=b from lxw_dual;

2011111209 00:00:00 2011111209 false true false

7. 空值判断: IS NULL

语法: A IS NULL

操作类型: 所有类型

描述: 如果表达式A的值为NULL,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where null is null;

8. 非空判断: IS NOT NULL

语法: A IS NOT NULL

操作类型: 所有类型

描述: 如果表达式A的值为NULL,则为FALSE;否则为TRUE

举例:

hive> select 1 from lxw_dual where 1 is not null;

9. LIKE比较: LIKE

语法: A LIKE B

操作类型: strings

描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B 的正则语法,则为TRUE;否则为FALSE。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符。

举例:

hive> select 1 from lxw_dual where 'football' like 'foot%';

hive> select 1 from lxw_dual where 'football' like 'foot____';

注意:否定比较时候用NOT A LIKE B

hive> select 1 from lxw_dual where NOT 'football' like 'fff%';

10. JAVA的LIKE操作: RLIKE

语法: A RLIKE B

操作类型: strings

描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。

举例:

hive> select 1 from lxw_dual where 'footbar’ rlike '^f.*r$’;

注意:判断一个字符串是否全为数字:

hive>select 1 from lxw_dual where '123456' rlike '^\\d+$';

hive> select 1 from lxw_dual where '123456aa' rlike '^\\d+$';

11. REGEXP操作: REGEXP

语法: A REGEXP B

操作类型: strings

描述: 功能与RLIKE相同

举例:

hive> select 1 from lxw_dual where 'footbar' REGEXP '^f.*r$';

二、数学运算:

1. 加法操作: +

语法: A + B

操作类型:所有数值类型

说明:返回A与B相加的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。比如,int + int 一般结果为int类型,而int + double 一般结果为double类型

举例:

hive> select 1 + 9 from lxw_dual;

10

hive> create table lxw_dual as select 1 + 1.2 from lxw_dual;

hive> describe lxw_dual;

_c0 double

2. 减法操作: -

语法: A –B

操作类型:所有数值类型

说明:返回A与B相减的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。比如,int –int 一般结果为int类型,而int –double 一般结果为double类型

举例:

hive> select 10 – 5 from lxw_dual;

hive> create table lxw_dual as select 5.6 – 4 from lxw_dual;

hive> describe lxw_dual;

_c0 double

3. 乘法操作: *

语法: A * B

操作类型:所有数值类型

说明:返回A与B相乘的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。注意,如果A乘以B的结果超过默认结果类型的数值范围,则需要通过cast将结果转换成范围更大的数值类型

举例:

hive> select 40 * 5 from lxw_dual;

200

4. 除法操作: /

语法: A / B

操作类型:所有数值类型

说明:返回A除以B的结果。结果的数值类型为double

举例:

hive> select 40 / 5 from lxw_dual;

注意:hive中最高精度的数据类型是double,只精确到小数点后16位,在做除法运算的时候要特别注意hive>select ceil(28.0/6.999999999999999999999) from lxw_dual limit 1;

结果为4

hive>select ceil(28.0/6.99999999999999) from lxw_dual limit 1;

结果为5

5. 取余操作: %

语法: A % B

操作类型:所有数值类型

说明:返回A除以B的余数。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

举例:

hive> select 41 % 5 from lxw_dual;

1

hive> select 8.4 % 4 from lxw_dual;

0.40000000000000036

注意:精度在hive中是个很大的问题,类似这样的操作最好通过round指定精度

hive> select round(8.4 % 4 , 2) from lxw_dual;

0.4

6. 位与操作: &

语法: A & B

操作类型:所有数值类型

说明:返回A和B按位进行与操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

举例:

hive> select 4 & 8 from lxw_dual;

hive> select 6 & 4 from lxw_dual;

4

7. 位或操作: |

语法: A | B

操作类型:所有数值类型

说明:返回A和B按位进行或操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

举例:

hive> select 4 | 8 from lxw_dual;

12

hive> select 6 | 8 from lxw_dual;

14

8. 位异或操作: ^

语法: A ^ B

操作类型:所有数值类型

说明:返回A和B按位进行异或操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

举例:

hive> select 4 ^ 8 from lxw_dual;

12

hive> select 6 ^ 4 from lxw_dual;

2

9.位取反操作: ~

语法: ~A

操作类型:所有数值类型

说明:返回A按位取反操作的结果。结果的数值类型等于A的类型。

举例:

hive> select ~6 from lxw_dual;

-7

hive> select ~4 from lxw_dual;

-5

三、逻辑运算:

1. 逻辑与操作: AND

语法: A AND B

操作类型:boolean

说明:如果A和B均为TRUE,则为TRUE;否则为FALSE。如果A为NULL或B为NULL,则为NULL 举例:

hive> select 1 from lxw_dual where 1=1 and 2=2;

1

2. 逻辑或操作: OR

语法: A OR B

操作类型:boolean

说明:如果A为TRUE,或者B为TRUE,或者A和B均为TRUE,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where 1=2 or 2=2;

1

3. 逻辑非操作: NOT

语法: NOT A

操作类型:boolean

说明:如果A为FALSE,或者A为NULL,则为TRUE;否则为FALSE

举例:

hive> select 1 from lxw_dual where not 1=2;

1

四、数值计算

1. 取整函数: round

语法: round(double a)

返回值: BIGINT

说明: 返回double类型的整数值部分(遵循四舍五入)

举例:

hive> select round(3.1415926) from lxw_dual;

3

hive> select round(3.5) from lxw_dual;

4

hive> create table lxw_dual as select round(9542.158) from lxw_dual;

hive> describe lxw_dual;

_c0 bigint

2. 指定精度取整函数: round

语法: round(double a, int d)

返回值: DOUBLE

说明: 返回指定精度d的double类型

举例:

hive> select round(3.1415926,4) from lxw_dual;

3.1416

3. 向下取整函数: floor

语法: floor(double a)

返回值: BIGINT

说明: 返回等于或者小于该double变量的最大的整数举例:

hive> select floor(3.1415926) from lxw_dual;

3

hive> select floor(25) from lxw_dual;

25

4. 向上取整函数: ceil

语法: ceil(double a)

返回值: BIGINT

说明: 返回等于或者大于该double变量的最小的整数举例:

hive> select ceil(3.1415926) from lxw_dual;

4

hive> select ceil(46) from lxw_dual;

46

5. 向上取整函数: ceiling

语法: ceiling(double a)

返回值: BIGINT

说明: 与ceil功能相同

举例:

hive> select ceiling(3.1415926) from lxw_dual;

4

hive> select ceiling(46) from lxw_dual;

46

6. 取随机数函数: rand

语法: rand(),rand(int seed)

返回值: double

说明: 返回一个0到1范围内的随机数。如果指定种子seed,则会等到一个稳定的随机数序列举例:

hive> select rand() from lxw_dual;

0.5577432776034763

hive> select rand() from lxw_dual;

0.6638336467363424

hive> select rand(100) from lxw_dual;

0.7220096548596434

hive> select rand(100) from lxw_dual;

0.7220096548596434

7. 自然指数函数: exp

语法: exp(double a)

返回值: double

说明: 返回自然对数e的a次方

举例:

hive> select exp(2) from lxw_dual;

7.38905609893065

自然对数函数: ln

语法: ln(double a)

返回值: double

说明: 返回a的自然对数

举例:

hive> select ln(7.38905609893065) from lxw_dual;

2.0

8. 以10为底对数函数: log10

语法: log10(double a)

返回值: double

说明: 返回以10为底的a的对数

举例:

hive> select log10(100) from lxw_dual;

2.0

9. 以2为底对数函数: log2

语法: log2(double a)

返回值: double

说明: 返回以2为底的a的对数

举例:

hive> select log2(8) from lxw_dual;

3.0

10. 对数函数: log

语法: log(double base, double a)

返回值: double

说明: 返回以base为底的a的对数

举例:

hive> select log(4,256) from lxw_dual;

4.0

11. 幂运算函数: pow

语法: pow(double a, double p)

返回值: double

说明: 返回a的p次幂

举例:

hive> select pow(2,4) from lxw_dual;

16.0

12. 幂运算函数: power

语法: power(double a, double p)

返回值: double

说明: 返回a的p次幂,与pow功能相同

举例:

hive> select power(2,4) from lxw_dual;

16.0

13. 开平方函数: sqrt

语法: sqrt(double a)

返回值: double

说明: 返回a的平方根

举例:

hive> select sqrt(16) from lxw_dual;

4.0

14. 二进制函数: bin

语法: bin(BIGINT a)

返回值: string

说明: 返回a的二进制代码表示

举例:

hive> select bin(7) from lxw_dual;

111

15. 十六进制函数: hex

语法: hex(BIGINT a)

返回值: string

说明: 如果变量是int类型,那么返回a的十六进制表示;如果变量是string类型,则返回该字符串的十六进制表示

举例:

hive> select hex(17) from lxw_dual;

11

hive> select hex(‘abc’) from lxw_dual;

616263

16. 反转十六进制函数: unhex

语法: unhex(string a)

返回值: string

说明: 返回该十六进制字符串所代码的字符串

举例:

hive> select unhex(‘616263’) from lxw_dual;

abc

hive> select unhex(‘11’) from lxw_dual;

hive> select unhex(616263) from lxw_dual;

abc

17. 进制转换函数: conv

语法: conv(BIGINT num, int from_base, int to_base)

返回值: string

说明: 将数值num从from_base进制转化到to_base进制

举例:

hive> select conv(17,10,16) from lxw_dual;

11

hive> select conv(17,10,2) from lxw_dual;

10001

18. 绝对值函数: abs

语法: abs(double a) abs(int a)

返回值: double int

说明: 返回数值a的绝对值

举例:

hive> select abs(-3.9) from lxw_dual;

3.9

hive> select abs(10.9) from lxw_dual;

10.9

19. 正取余函数: pmod

语法: pmod(int a, int b),pmod(double a, double b)

返回值: int double

说明: 返回正的a除以b的余数

举例:

hive> select pmod(9,4) from lxw_dual;

1

hive> select pmod(-9,4) from lxw_dual;

3

20. 正弦函数: sin

语法: sin(double a)

返回值: double

说明: 返回a的正弦值

举例:

hive> select sin(0.8) from lxw_dual;

0.7173560908995228

21. 反正弦函数: asin

语法: asin(double a)

返回值: double

说明: 返回a的反正弦值

举例:

hive> select asin(0.7173560908995228) from lxw_dual;

0.8

22. 余弦函数: cos

语法: cos(double a)

返回值: double

说明: 返回a的余弦值

举例:

hive> select cos(0.9) from lxw_dual;

0.6216099682706644

23. 反余弦函数: acos

语法: acos(double a)

返回值: double

说明: 返回a的反余弦值

举例:

hive> select acos(0.6216099682706644) from lxw_dual;

0.9

24. positive函数: positive

语法: positive(int a), positive(double a)

返回值: int double

说明: 返回a

举例:

hive> select positive(-10) from lxw_dual;

-10

hive> select positive(12) from lxw_dual;

12

25. negative函数: negative

语法: negative(int a), negative(double a)

返回值: int double

说明: 返回-a

举例:

hive> select negative(-5) from lxw_dual;

5

hive> select negative(8) from lxw_dual;

-8

五、日期函数

1. UNIX时间戳转日期函数: from_unixtime

语法: from_unixtime(bigint unixtime[, string format])

返回值: string

说明: 转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:

hive> select from_unixtime(1323308943,'yyyyMMdd') from lxw_dual;

20111208

2. 获取当前UNIX时间戳函数: unix_timestamp

语法: unix_timestamp()

返回值: bigint

说明: 获得当前时区的UNIX时间戳

举例:

hive> select unix_timestamp() from lxw_dual;

1323309615

3. 日期转UNIX时间戳函数: unix_timestamp

语法: unix_timestamp(string date)

返回值: bigint

说明: 转换格式为"yyyy-MM-dd HH:mm:ss"的日期到UNIX时间戳。如果转化失败,则返回0。

举例:

hive> select unix_timestamp('2011-12-07 13:01:03') from lxw_dual;

1323234063

4. 指定格式日期转UNIX时间戳函数: unix_timestamp

语法: unix_timestamp(string date, string pattern)

返回值: bigint

说明: 转换pattern格式的日期到UNIX时间戳。如果转化失败,则返回0。

举例:

hive> select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss') from lxw_dual;

1323234063

5. 日期时间转日期函数: to_date

语法: to_date(string timestamp)

返回值: string

说明: 返回日期时间字段中的日期部分。

举例:

hive> select to_date('2011-12-08 10:03:01') from lxw_dual;

2011-12-08

6. 日期转年函数: year

语法: year(string date)

返回值: int

说明: 返回日期中的年。

举例:

hive> select year('2011-12-08 10:03:01') from lxw_dual;

2011

hive> select year('2012-12-08') from lxw_dual;

2012

7. 日期转月函数: month

语法: month (string date)

返回值: int

说明: 返回日期中的月份。

举例:

hive> select month('2011-12-08 10:03:01') from lxw_dual;

12

hive> select month('2011-08-08') from lxw_dual;

8

8. 日期转天函数: day

语法: day (string date)

返回值: int

说明: 返回日期中的天。

举例:

hive> select day('2011-12-08 10:03:01') from lxw_dual;

8

hive> select day('2011-12-24') from lxw_dual;

24

9. 日期转小时函数: hour

语法: hour (string date)

返回值: int

说明: 返回日期中的小时。

举例:

hive> select hour('2011-12-08 10:03:01') from lxw_dual;

10

10. 日期转分钟函数: minute

语法: minute (string date)

返回值: int

说明: 返回日期中的分钟。

举例:

hive> select minute('2011-12-08 10:03:01') from lxw_dual;

3

11. 日期转秒函数: second

语法: second (string date)

返回值: int

说明: 返回日期中的秒。

举例:

hive> select second('2011-12-08 10:03:01') from lxw_dual;

1

12. 日期转周函数: weekofyear

语法: weekofyear (string date)

返回值: int

说明: 返回日期在当前的周数。

举例:

hive> select weekofyear('2011-12-08 10:03:01') from lxw_dual;

49

13. 日期比较函数: datediff

语法: datediff(string enddate, string startdate)

返回值: int

说明: 返回结束日期减去开始日期的天数。

举例:

hive> select datediff('2012-12-08','2012-05-09') from lxw_dual;

213

14. 日期增加函数: date_add

语法: date_add(string startdate, int days)

返回值: string

说明: 返回开始日期startdate增加days天后的日期。

举例:

hive> select date_add('2012-12-08',10) from lxw_dual;

2012-12-18

15. 日期减少函数: date_sub

语法: date_sub (string startdate, int days)

返回值: string

说明: 返回开始日期startdate减少days天后的日期。

举例:

hive> select date_sub('2012-12-08',10) from lxw_dual;

2012-11-28

六、条件函数

1. If函数: if

语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)

返回值: T

说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull 举例:

hive> select if(1=2,100,200) from lxw_dual;

200

hive> select if(1=1,100,200) from lxw_dual;

100

2. 非空查找函数: COALESCE

语法: COALESCE(T v1, T v2, …)

返回值: T

说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL

举例:

hive> select COALESCE(null,'100','50′) from lxw_dual;

100

3. 条件判断函数:CASE

语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

返回值: T

说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f

举例:

hive> Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from lxw_dual;

mary

hive> Select case 200 when 50 then 'tom' when 100 then 'mary' else 'tim' end from lxw_dual;

tim

4. 条件判断函数:CASE

语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END

返回值: T

说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e

举例:

hive> select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end from lxw_dual;

mary

hive> select case when 1=1 then 'tom' when 2=2 then 'mary' else 'tim' end from lxw_dual;

tom

七、字符串函数

1. 字符串长度函数:length

语法: length(string A)

返回值: int

说明:返回字符串A的长度

举例:

hive> select length('abcedfg') from lxw_dual;

7

2. 字符串反转函数:reverse

语法: reverse(string A)

返回值: string

说明:返回字符串A的反转结果

举例:

hive> select reverse(abcedfg’) from lxw_dual;

gfdecba

3. 字符串连接函数:concat

语法: concat(string A, string B…)

返回值: string

说明:返回输入字符串连接后的结果,支持任意个输入字符串

举例:

hive> select concat(‘abc’,'def’,'gh’) from lxw_dual;

abcdefgh

4. 带分隔符字符串连接函数:concat_ws

语法: concat_ws(string SEP, string A, string B…)

返回值: string

说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符举例:

hive> select concat_ws(',','abc','def','gh') from lxw_dual;

abc,def,gh

5. 字符串截取函数:substr,substring

语法: substr(string A, int start),substring(string A, int start)

返回值: string

说明:返回字符串A从start位置到结尾的字符串

举例:

hive> select substr('abcde',3) from lxw_dual;

cde

hive> select substring('abcde',3) from lxw_dual;

cde

hive> select substr('abcde',-1) from lxw_dual; (和ORACLE相同)

e

6. 字符串截取函数:substr,substring

语法: substr(string A, int start, int len),substring(string A, int start, int len)返回值: string

说明:返回字符串A从start位置开始,长度为len的字符串

举例:

hive> select substr('abcde',3,2) from lxw_dual;

cd

hive> select substring('abcde',3,2) from lxw_dual;

cd

hive>select substring('abcde',-2,2) from lxw_dual;

de

7. 字符串转大写函数:upper,ucase

语法: upper(string A) ucase(string A)

返回值: string

说明:返回字符串A的大写格式

举例:

hive> select upper('abSEd') from lxw_dual;

ABSED

hive> select ucase('abSEd') from lxw_dual;

ABSED

8. 字符串转小写函数:lower,lcase

语法: lower(string A) lcase(string A)

返回值: string

说明:返回字符串A的小写格式

举例:

hive> select lower('abSEd') from lxw_dual;

absed

hive> select lcase('abSEd') from lxw_dual;

absed

9. 去空格函数:trim

语法: trim(string A)

返回值: string

说明:去除字符串两边的空格

举例:

hive> select trim(' abc ') from lxw_dual;

abc

10. 左边去空格函数:ltrim

语法: ltrim(string A)

返回值: string

说明:去除字符串左边的空格

举例:

hive> select ltrim(' abc ') from lxw_dual;

abc

11. 右边去空格函数:rtrim

语法: rtrim(string A)

返回值: string

说明:去除字符串右边的空格

举例:

hive> select rtrim(' abc ') from lxw_dual;

abc

12. 正则表达式替换函数:regexp_replace

13. 正则表达式解析函数:regexp_extract

语法: regexp_extract(string subject, string pattern, int index)

返回值: string

说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

举例:

hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 1) from lxw_dual;

the

hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 2) from lxw_dual;

bar

hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 0) from lxw_dual;

foothebar

注意,在有些情况下要使用转义字符,下面的等号要用双竖线转义,这是java正则表达式的规则。

select data_field,

regexp_extract(data_field,'.*?bgStart\\=([^&]+)',1) as aaa,

regexp_extract(data_field,'.*?contentLoaded_headStart\\=([^&]+)',1) as bbb,

regexp_extract(data_field,'.*?AppLoad2Req\\=([^&]+)',1) as ccc

from pt_nginx_loginlog_st

where pt = '2012-03-26' limit 2;

14. URL解析函数:parse_url

语法: parse_url(string urlString, string partToExtract [, string keyToExtract])

返回值: string

说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

举例:

hive> select parse_url('https://www.doczj.com/doc/f414137599.html,/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') from lxw_dual;

https://www.doczj.com/doc/f414137599.html,

hive> select parse_url('https://www.doczj.com/doc/f414137599.html,/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') from lxw_dual;

v1

15. json解析函数:get_json_object

语法: get_json_object(string json_string, string path)

返回值: string

说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NULL。

举例:

hive>select get_json_object('{"store":

> {"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],

> "bicycle":{"price":19.95,"color":"red"}

> },

> "email":"amy@only_for_json_udf_https://www.doczj.com/doc/f414137599.html,",

> "owner":"amy"

> }

> ','$.owner') from lxw_dual;

amy

整理的SQL常用函数

create table test (id int, value varchar(10)) insertinto test values('1','aa') insertinto test values('1','bb') insertinto test values('2','aaa') insertinto test values('2','bbb') insertinto test values('2','ccc') insertinto test values('3','aa') insertinto test values('4','bb') select*from test select id, [values] =stuff((select','+ [values] from test t where id = test.id forxmlpath('')), 1 , 1 ,'') from test groupby id stuff(param1,startIndex,length, param2) 说明:将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。*/

COUNT()函数用于返回一个列内所有非空值的个数,这是一个整型值。 由于COUNT(*)函数会忽略NULL值,所以这个查询的结果是2。 三、SUM()函数 SUM()函数是最常用的聚合函数之一,它的功能很容易理解:和AVG()函数一样,它用于数值数据类型,返回一个列范围内所有非空值的总和。 四、CAST()函数 CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。 以下例子用于将文本字符串'123'转换为整型: SELECT CAST('123' AS int) 返回值是整型值123。 如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢? SELECT CAST('123.4' AS int) CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于123.4不能用int数据类型来表示,所以对这个函数调用将产生一个错误。 Server: Msg 245, Level 16, State 1, Line 1 Syntax error converting the varchar value '123.4' to a column of data type int. 在将varchar值'123.4' 转换成数据类型int时失败。 要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为decimal类型,需要首先定义decimal 值的精度与小数位数。在本例中,精度与小数位数分别为9与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。 SELECT CAST('123.4' AS decimal(9,2)) decimal数据类型在结果网格中将显示有效小数位:123.40 精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server 将截断数字的小数部分,而不会产生错误。 SELECT CAST('123.4' AS decimal) 结果是一个整数值:123 五、CONVERT()函数 对于简单类型转换,CONVERT()函数和CAST()函数的功能相同,只是语法不同。 CAST()函数一般更容易使用,其功能也更简单。 CONVERT()函数的优点是可以格式化日期和数值,它需要两个参数:第1个是目标数据类型,第2个是源数据。 CONVERT()函数还具有一些改进的功能,它可以返回经过格式化的字符串值,且可以把日期值格式化成很多形式。有28种预定义的符合各种国际和特殊要求的日期与时间输出格式。 六、STR()函数 这是一个将数字转换为字符串的快捷函数。这个函数有3个参数:数值、总长度和小数位数。如果数字的整数位数和小数位数(要加上小数点占用的一个字符)的总和小于总长度,对结果中左边的字符将用空格填充。在下面第1个例子中,包括小数点在内一共是5个字符。结果

DB2_SQL常用函数

DB2函数大全 函数名函数解释函数举例 AVG() 返回一组数值的平均值. SELECTAVG(SALARY)FROMBSEMPMS; CORR(),CORRELATION() 返回一对数值的关系系数. SELECT CORRELATION(SALARY,BONUS)FROM BSEMPMS; COUNT() 返回一组行或值的个 数.SELECTCOUNT(*)FROMBSEMPMS; COVAR(),COVARIANCE() 返回一对数值的协方差. SELECTCOVAR(SALARY,BONUS)FROMBSEMPMS; MAX() 返回一组数值中的最大值. SELECTMAX(SALARY)FROMBSEMPMS; MIN() 返回一组数值中的最小值. SELECTMIN(SALARY)FROMBSEMPMS; STDDEV() 返回一组数值的标准偏差. SELECTSTDDEV(SALARY)FROMBSEMPMS; SUM() 返回一组数据的和. SELECTSUM(SALARY)FROMBSEMPMS; VAR(),VARIANCE() 返回一组数值的方差. SELECTVARIANCE(SALARY)FROMBSEMPMS; ABS(),ABSVAL() 返回参数的绝对值. SELECTABS(-3.4)FROMBSEMPMS; ACOS() 返回参数的反余弦值. SELECTACOS(0.9)FROMBSEMPMS; ASCII() 返回整数参数最左边的字符的ASCII码. SELECTASCII('R')FROMBSEMPMS; ASIN() 返回用弧度表示的角度的参数的反正弦函数. SELECTASIN(0.9)FROMBSEMPMS; ATAN() 返回参数的反正切值,该参数用弧度表示的角度的参数. SELECTATAN(0.9)FROMBSEMPMS; ATAN2() 返回用弧度表示的角度的X和Y坐标的反正切值. SELECTATAN2(0.5,0.9)FROMBSEMPMS;

sql常用函数instr()和substr()

在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。 其语法为: instr(sourceString,destString,start,appearPosition). instr('源字符串' , '目标字符串' ,'开始位置','第几次出现') 其中sourceString代表源字符串; destString代表想聪源字符串中查找的子串; start代表查找的开始位置,该参数可选的,默认为1; appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1; 如果start的值为负数,那么代表从右往左进行查找,但是位置数据仍然从左向右计算。 返回值为:查找到的字符串的位置。 对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:SQL> select instr('yuechaotianyuechao','ao') position from dual; POSITION ---------- 6 从第7个字符开始搜索 SQL> select instr('yuechaotianyuechao','ao', 7) position from dual; POSITION ---------- 17 从第1个字符开始,搜索第2次出现子串的位置 SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual; POSITION ---------- 17 注意:1。若‘起始位置’=0 时返回结果为0, 2。这里只有三个参数,意思是查找第一个要查找字符的位置(因为‘第几次出现’默认为1), 当‘起始位置’不大于要查找的第一个字符的位置时,返回的值都将是第一个字符的位置,如果‘起始位置’大于要查找的第一个字符的位置时,返回的值都将是第2个字符的位置,依此类推……(但是也是以第一个字符开始计数)

plsql常用函数

PLSQL常用函数 1)处理字符的函数 || CONCAT ---并置运算符。 格式∶CONCAT(STRING1, STRING2) 例:’ABC’|| ’DE’=’ABCDE’ CONCAT(‘ABC’,’DE’) =’ABCDE’ INSTR---搜索子串位置 格式∶INSTR(STRING , SET[ , 开始位置[ , 出现次数]]) 例∶ INSTR (‘this is a test’ , ‘i’ , 1,2)=6 LENGTH----计算串长 格式∶ LENGTH(string) LTRIM,RTRIM,TRIM -----左截断,右截断,左右截断。默认为删除空格。 格式∶ LTRIM(STRING[,‘SET’]) 例∶ LTRIM(‘***tes*t***’,’*’)=’tes*t***’ LOWER----将字符串转换为小写 格式∶LOWER(string) UPPER---将字符串转换为大写 格式∶UPPER(string) SUBSTR----提取子串。START为正数时从左开始、为负数时从右开始 格式∶ SUBSTR(STRING , START [ , COUNT]) 例∶ SUBSTR(‘WORDSTAR’ , 2 , 3)=’ ORD’ REPLACE---搜索指定字符串并替换 格式∶REPLACE(string , substring , replace_string) 例∶ REPLACE(‘this is a test’ , ‘this’ , ‘that an’)=’that an is a test’

2)处理数字的函数 ROUND---返回固定小数位数。 格式∶ROUND (value)value为数字 例∶ROUND (66.123,2)= 66.12 CELL---返回大于等于特定值的最小整数 格式∶CELL(value) 例∶ CELL(-10,9)= -10 3)处理日期 SYSDATE---系统时间。精确至秒 例:TO_CHAR(SYSDATE,'YYYY-MM-DD') 2011-05-11(返回日期) TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') 2011-05-11 11:05:15(返回日期+时间) 常用日期数据格式 Y或YY或YYY 年的最后一位,两位或三位Select to_char(sysdate,’YYY’) from dual; SYEAR或YEAR SYEAR使公元前的年份前加一负号Select to_char(sysdate,’SYEAR’) from dua l;-1112表示公元前111 2年 Q 季度,1~3月为第一季度Select to_char(sysdate,’Q’) from dual;2表示第二季度① MM 月份数Select to_char(sysdate,’MM’) from dual;12表示12月 RM 月份的罗马表示Select to_char(sysdate,’RM’) from dual;IV表示4月 Month 用9个字符长度表示的月份名Select to_char(sysdate,’Month’) from dual;May后跟6个空格表示5月 WW 当年第几周Select to_char(sysdate,’WW’) from dual;24表示2002年6月13日为第24周W 本月第几周Select to_char(sysdate,’W’) from dual;2002年10月1日为第1周 DDD 当年第几, 1月1日为001,2月1日为032 Select to_char(sysdate,’DDD’) from dual;36 3 2002年1 2月2 9日为第363天 DD 当月第几天Select to_char(sysdate,’DD’) from dual;04 10月4日为第4天 D 周内第几天Select to_char(sysdate,’D’) from dual;5 2002年3月14日为星期一 DY 周内第几天缩写Select to_char(sysdate,’DY’) from dual;SUN 2002年3月24日为星期天

数据库常用函数

数据库常用函数

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份和还原 备份:exp dsscount/sa@dsscount owner=dsscount file=C:\dsscount_data_backup\dsscount.dmp log=C:\dsscount_data_backup\outputa.log 还原:imp dsscount/sa@dsscount file=C:\dsscount_data_backup\dsscount.dmp full=y ignore=y log=C:\dsscount_data_backup\dsscount.log statistics=none 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) CREATE TABLE ceshi(id INT not null identity(1,1) PRIMARY KEY,NAME VARCHAR(50),age INT) id为主键,不为空,自增长 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围

SQL常用语句及函数方法

1、通常用到的字符串转日期格式 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 Select CONVERT(varchar(100), GETDATE(), 12): 060516 Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47

mssql常用函数

MS SQL 常用函数 一、字符转换函数 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 ,左边补足空格。 二、去空格函数 1、LTRIM() 把字符串头部的空格去掉。 2、RTRIM() 把字符串尾部的空格去掉。 三、取子串函数 1、left() LEFT () 返回character_expression左起integer_expression个字符。

2、RIGHT() RIGHT () 返回character_expression右起integer_expression个字符。 3、SUBSTRING() SUBSTRING (,length) 返回从字符串左边第starting_ position 个字符起length个字符的部分。 四、字符串比较函数 1、CHARINDEX() 返回字符串中某个指定的子串出现的开始位置。 CHARINDEX () 其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。 此函数不能用于TEXT 和IMAGE 数据类型。 2、PATINDEX() 返回字符串中某个指定的子串出现的开始位置。 PATINDEX ()其中子串表达式前后必须有百分号“%”否则返回值为0。 与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于 CHAR、VARCHAR 和TEXT 数据类型。 五、字符串操作函数 1、QUOTENAME() 返回被特定字符括起来的字符串。 QUOTENAME ([,quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。 2、REPLICATE()

SQL常用函数,整理

一数学函数 1,求绝对值ABS() 2,求指数POWER(x,y); 3,求平方根SQRT() select FWeight, SQRT(FWeight) from t_person; 4 求随机数 A,mysql RAND()select rand(); B,sqlserver rand() ,rand(x); select rand(), select rand(9527)支持种子 5舍入到最大整数Ceiling() select FWeight, ceiling(FWeight), ceiling(FWeight * -1) from t_person; 6舍入到最小整数floor() 7,四舍五入round(m,d) m为四舍五入的数值,d为计算精度(特别地d还可以为负值)如36.63精度-1为40 Round(m)为m值0精度 8求正弦值sin(m); select sin(1) from t_person 求余弦值cos(m); 求返正弦值asin(m); 求反余弦acos(m); 9求正切值tan(m) 反正切atan(m) 求余切cotm() 10求圆周率PI(); 11.弧度转换为角度degrees(m);角度转换为弧度制radians() 12求符号sign();(符号函数) 13 求整除余数mod(m,d);m为除数d 为被除数(sqlserver中直接用%)14,求自然对数LOG(m); 求10为底得对数LOG10(); 二字符串函数 1 计算字符串长度length(m); select length(FName) from t_person Sqlserver中为len(); 2字符串转换为小写Lower(m) 字符串转换为大写UPPER(m) 3截去字符串左侧空格ltrim(m); 截去字符串右侧空白rtrim(m); 截去字符串两侧空白trim(m) 5取子字符串substring(string,start_position,length); 6计算子字符串的位置instr(string, substring);若不存在子字符串则返回0 7从左侧开始取字符串Left(string, length); 从右侧开始取字符串Right(string, length); 8字符串替换replace(string,string_tobe_replace, string_to_replace); 9得到字符的ASCII码ASCII(m)如果参数为字符串则返回第一个字符的Ascii 码

MSSQL常用函数及技巧

--聚合函数 use pubs go select avg(distinct price)--算平均数 from titles where type='business' go use pubs go select max(ytd_sales)--最大数 from titles go use pubs go select min(ytd_sales)--最小数 from titles go use pubs go select type,sum(price),sum(advance)--求和 from titles group by type order by type go use pubs go select count(distinct city)--求个数 from authors go use pubs go select stdev(royalty)--返回给定表达式中所有值的统计标准偏差from titles go use pubs go select stdevp(royalty)--返回表达式中所有制的填充统计标准偏差from titles go use pubs go select var(royalty)--返回所有值的统计方差 from titles

go use pubs go select varp(royalty)--返回所有值的填充的统计方差 from titles go --数学函数 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 pubs select au_lname,substring(au_fname,1,1)--取子串 from authors order by au_lname select 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) --系统函数

sql函数详尽说明大全

Sql函数说明 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果。这些要求包括:执行计算与数学运算、转换数据、解析数值、组合值和聚合一个范围内的值等。 下表给出了T-SQL函数的类别和描述。 函数的组成 函数的目标是返回一个值。大多数函数都返回一个标量值(scalar value),标量值代表一个数据单元或一个简单值。实际上,函数可以返回任何数据类型,包括表、游标等可返回完整的多行结果集的类型。本章不准备讨论到这个深度,第12章将讲解如何创建和使用用户自定义函数,以返回更复杂的数据。 函数己经存在很长时间了,它的历史比SQL还要长。在几乎所有的编程语言中,函数调用的方式都是相同的: Result=Function() 在T-SQL中,一般用SELECT语句来返回值。如果需要从查询中返回一个值,就可以把SELECT当成输出运算符,而不用使用等号: SELECT Function() 一个论点

对于SQL函数而言,参数表示输入变量或者值的占位符。函数可以有任意个参数,有些参数是必须的,而有些参数是可选的。可选参数通常被置于以逗号隔开的参数表的末尾,以便于在函数调用中去除不需要的参数。 在SQL Server在线图书或者在线帮助系统中,函数的可选参数用方括号表示。在下列的CONVERT()函数例子中,数据类型的length和style参数是可选的: CONVERT (data-type [(length)], expression[,style]) 可将它简化为如下形式,因为现在不讨论如何使用数据类型: CONVERT(date_type, expression[,style]) 根据上面的定义,CONVERT()函数可接受2个或3个参数。因此,下列两个例子都是 这个函数的第一个参数是数据类型Varchar(20),第2个参数是另一个函数GETDATE()。GETDATE()函数用datetime数据类型将返回当前的系统日期和时间。第2条语句中的第3个参数决定了日期的样式。这个例子中的101指以mm/dd/yyyy格式返回日期。本章后面将详细介绍GETDATE()函数。即使函数不带参数或者不需要参数,调用这个函数时也需要写上一对括号,例如GETDATE()函数。注意在书中使用函数名引用函数时,一定要包含括号,因为这是一种标准形式。 确定性函数 由于数据库引擎的内部工作机制,SQL Server必须根据所谓的确定性,将函数分成两个不同的组。这不是一种新时代的信仰,只和能否根据其输入参数或执行对函数输出结果进行预测有关。如果函数的输出只与输入参数的值相关,而与其他外部因素无关,这个函数就是确定性函数。如果函数的输出基于环境条件,或者产生随机或者依赖结果的算法,这个函数就是非确定性的。例如,GETDATE()函数是非确定性函数,因为它不会两次返回相同的值。为什么要把看起来简单的事弄得如此复杂呢?主要原因是非确定性函数与全局变量不能在一些数据库编程对象中使用(如用户自定义函数)。部分原因是SQL Server缓存与预编译可执行对象的方式。例如,即席查询可以使用任何函数,不过如果打算构建先进的、可重用的编程对象,理解这种区别很重要。 以下这些函数是确定性的: ●?AVG()(所有的聚合函数都是确定性的) ●?CAST() ●?CONVERT() ●?DATEADD() ●?DATEDIFF() ●?ASCII() ●?CHAR() ●?SUBSTRING() 以下这些函数与变量是非确定性的: ●?GETDATE()

T-SQL内置函数

*******************Transact_SQL******************** --语句功能 --数据操作 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 --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果

sqlserver常用函数对比

SQLServer和Oracle的常用函数对比 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual 5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346

6.e为底的幂 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数 S:select log10(10) value 1 O:select log(10,10) value from dual; 1 9.取平方 S:select SQUARE(4) value 16 O:select power(4,2) value from dual 16 10.取平方根 S:select SQRT(4) value 2 O:select SQRT(4) value from dual 2

SQL常用表函数整理

SQL SERVER常用系统表 sysaltfiles 主数据库保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库配置选项 syscurconfigs 主数据库当前配置选项 sysdatabases 主数据库服务器中的数据库 syslanguages 主数据库语言 syslogins 主数据库登陆帐号信息 sysoledbusers 主数据库链接服务器登陆信息 sysprocesses 主数据库进程 sysremotelogins主数据库远程登录帐号 syscolumns 每个数据库列 sysconstrains 每个数据库限制 sysfilegroups 每个数据库文件组 sysfiles 每个数据库文件 sysforeignkeys 每个数据库外部关键字 sysindexs 每个数据库索引 sysmembers 每个数据库角色成员 sysobjects 每个数据库所有数据库对象 syspermissions 每个数据库权限 systypes 每个数据库用户定义数据类型 sysusers 每个数据库用户 SQL SERVER常用函数简单介绍 只做常用部分简单介绍,详细内容见T-SQL联机丛书。 1,统计函数 avg, count, max, min, sum 多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组 2,数学函数 SQRT(n)返回一个数的平方根 Square(n)返回一个数的平方 ceiling(n) 返回大于或者等于n的最小整数 floor(n), 返回小于或者是等于n的最大整数 round(m,n), 四舍五入,n是保留小数的位数 abs(n) sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1 PI(), 3.1415.... rand(),rand(n), 返回0-1之间的一个随机数 3,字符串函数

SQL集合运算及常用函数

SQL 集合运算及常用函数 SQL 函数 一、字符转换函数 1.ASCII () 返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’ 2.CHAR () 3.LOWER () 4.UPPER ()

5.STR () 把数值型数据转换为字符型数据。 STR ([,length[,]]) length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10,decimal 缺省值为0。 当length 或者decimal 为负值时,返回NULL; 当length 小于小数点左边(包括符号位)的位数时,返回length 个*; 先服从length ,再取decimal ; 当返回的字符串位数小于length ,左边补足空格。 二、去空格函数 1.LTRIM () 2.RTRIM () 三、取子串函数 1.LEFT () LEFT () 返回character_expression 左起integer_expression 个字符。

2.RIGHT () RIGHT () 3.SUBSTRING () SUBSTRING (,length) 返回从字符串左边第starting_ position 个字符起length个字符的部分。 四、字符串比较函数 1.CHARINDEX () 返回字符串中某个指定的子串出现的开始位置。 CHARINDEX (<’substring_expression’>,) 其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。 此函数不能用于TEXT 和IMAGE 数据类型。 2.PATINDEX () 返回字符串中某个指定的子串出现的开始位置。 PATINDEX (<’%substring _expression%’>,)其中子串表达式前后必须有百分号“%”否则返回值为0。 与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于

SQL中经典函数使用实例大全

select substring(CODE_KIND,2,3)kind from code//2处为起始位置,3为获取字符的长度。 select left(CODE_KIND,3)from CODE//返回从左边数起的3个字符,right()函数反之。 select left('1233',2) select upper(code_name)name from code//将字符串中每个小写字母转换为大写字母,lower转化成小写。 select REVERSE(code_name)code_name from code//将查询结果反过来。SELECT row_number()over(order by code_kind)as kind,*from code

with codeT as ( SELECT row_number()over(order by code_kind desc)as kind,*from code ) select*from codeT where kind>1and kind<4 SELECT RANK()over(order by code_kind)as kind,*from code//rand()查询出来的数字不是连续的。DENSE_RANK()查出来的反之。 SELECT DENSE_RANK()over(order by code_kind)as kind,*from code

學習SQL中事務,以及upper(),right(),RANK(),DENSE_RANK(),replace()等等一些操作sql中字符串的常用函數。可快速查找出sql中符合自己所想要的數據。 可以。比如说现在有两个排序字段,如果根据第1个字段排不出来(有几条记录的这个字段相同)的话,再根据第2个字段排的。 请看下面的例子: 可多字段排序,当多字段排序时,首先排序第一个字段,当第一个字段值相同时,才按第二个字段排序,如果第二个字段值相同,才按第三个排序... 比如说现在有两个排序字段,如果根据第1个字段排不出来(有几条记录的这个字段相同)的话,再根据第2个字段排的 排序前(注意红色标记部分的数据): SQL语句: select*from Test where uname like'Test%'order by score desc,uname asc; 排序后(注意红色标记部分的数据):

相关主题
文本预览
相关文档 最新文档