zoukankan      html  css  js  c++  java
  • Sybase常用函数

    原文

    字符串函数
    1)ISNULL(EXP1,EXP2,EXP3,...) :返回第一个非空值,用法与COALESCE(exp1,exp2[,exp3...])相同

    --测试代码
    select ISNULL('EXP1','EXP2','EXP3');     --输出结果:EXP1
    select ISNULL(null,'1','EXP2','EXP3');   --输出结果:1
    select ISNULL(' ','EXP2','EXP3');        --输出结果: 
    select COALESCE('EXP1','EXP2','EXP3');  --输出结果:EXP1

    2)TRIM(exp) :去除两边空格

    --测试代码
    select TRIM('  EXP3   ');  --结果:EXP3
    

    3)DATEFORMAT(date_exp,date_format) :日期型转字符型;

    --示例代码
    select DATEFORMAT(now(),'YYYYMMDD');
    select DATEFORMAT(now(),'YYYY-MM-DD HH:MM:SS');

    4)STRING(exp):转为字符型;

    --测试代码
    select string(now());
    --结果:2018-04-26 17:07:42.840

    6)SUBSTRING(exp,int-exp1,[int-exp2]):截取exp从int-exp1开始,截取int-exp2个字符;

    --测试代码
    select SUBSTRING('exp',1,1);  --结果:e
    

    7)REPLACE(o-exp,search-exp,replace-exp):从o-exp搜索search-exp,替换为replace-exp;

    --测试代码
    select REPLACE('exp','e',1);  --结果:1xp

    8)SPACE(int_exp):返回int个空格;

    --测试代码
    select '1'+SPACE(2)+'1'; --结果:1 1
    
    --space(n) 输出n个空格  参数n是指示空格个数的正整数。如果n为负,则返回空字符串。
    --测试代码 n非正整数
    select '1'+SPACE(-1)+'1';  --输出结果:11
    select '1'+SPACE(0)+'1';  --输出结果:11

    9)UPPER(exp):转为大写字母,等价于UCASE(exp);

    --测试代码
    select UPPER('Wed');  --结果:WED
    select UCASE('Wed'); --结果:WED

    10)LOWER(exp):转为小写字母,

    --测试代码
    select LOWER('Wed');  --结果:wed
    select LCASE('Wed');  --结果:wed

    11)CHARINDEX(exp1,exp2):返回exp2字符串中exp1的位置!定位,exp1 查找的字符,exp2 被查找的字符串;

    --测试代码
    select CHARINDEX('w','Wed');  --结果:0
    select CHARINDEX('W','Wed');  --结果:1

    12)DATALENGTH(CHAR_EXPR):在char_expr中返回字符的长度值,忽略尾空;

    --测试代码
    select DATALENGTH('Wed');   --3
    select DATALENGTH(' Wed');  --4
    select DATALENGTH(' Wed ');  --5

    13)RIGHT(char_expr,int_expr):返回char_expr右边的int_expr个字符;

    --测试代码
    select RIGHT('Wed',2);  --结果:ed
    select RIGHT('Wed',12);  --结果:Wed

    14)LEFT(char_expr,int_expr):返回char_expr左边的int_expr个字符;

    --测试代码
    select LEFT('Wed',2);   --结果:We
    select LEFT('Wed',12);  --结果:Wed

    15)REPLICATE(char_expr,int_expr):重复char_expr,int_expr次;

    --测试代码
    select REPLICATE('Wed',-2);  --结果:
    select REPLICATE('Wed',0);   --结果:
    select REPLICATE('Wed',2);   --结果:WedWed

    16)STUFF(expr1,start,length,expr2):用expr2代替epxr1中start起始长为length的字符串;

    --测试代码
    SELECT STUFF('ABCDEFG',1,3,'XXXX');   --结果:XXXXDEFG
    SELECT STUFF('ABCDEFG',1,3,'X');        --结果:XDEFG
    SELECT STUFF('ABCDEFG',1,30,'X');      --结果:X

    17)REVERSE(char_expr):反写char_expr中的文本;

    --测试代码
    SELECT REVERSE('ABCDEFGX');  --结果:XGFEDCBA

    18)LTRIM(char_expr):删除头空;RTRIM(char_expr):删除尾空;

    --测试代码
    SELECT LTRIM(' ABCDEFGX ');   --结果:ABCDEFGX 
    SELECT RTRIM(' ABCDEFGX ');   --结果: ABCDEFGX
    SELECT TRIM(' ABCDEFGX ');    --结果:ABCDEFGX

    19)STR(float_expr[,length[,decimal]]):进行数值型到字符型转换。

    float_expression是带小数点的近似数字 (float) 数据类型的表达式。不要在 STR 函数中将函数或子查询用作 float_expression。
    length是总长度,包括小数点、符号、数字或空格。默认值为 10。
    decimal是小数点右边的位数。
    返回类型char

    --测试代码
    select STR(23.36,5,2);  --结果:23.36

    20)PATINDEX("%pattern%",expression):返回指定样式的开始位置,否则为0;

    --测试代码
    SELECT PATINDEX('%pattern%','12pattern');  --结果:3
    SELECT PATINDEX('%pattern%','1pattern');   --结果:2
    SELECT PATINDEX('%pattern%','pattern');    --结果:1
    SELECT PATINDEX('%pattern%','attern');     --结果:0

    21)NULLIF(exp1,exp1):比较两个表达式,如果相等则返回null值,否则返回exp1

    --测试代码
    SELECT NULLIF('attern','attern');   --结果:null
    SELECT NULLIF('attern1','attern');  --结果:attern1

    22)NUMBER(*):返回序号,相当于ORACLE的rowid,但有区别;

    --测试代码
    SELECT NUMBER(*);  --结果:1
    SELECT NUMBER();   --结果:1

    其他函数
    23)RANK() OVER(PARTITION BY .. ORDER BY ..) 分组分析函数,相同的ORDER BY值,返回顺序值一样,且PARTITION BY 只支持一个字段或一个字段组(需多个字段分组的则要用 || 拼为一个字段(待确认))???没用过
    24)返回可读的 全局ID UUIDTOSTR(NEWID())

    --测试代码
    SELECT  UUIDTOSTR(NEWID());  --结果:e9ae5678-6a55-11e8-9000-cac0d0f0f292

    25)COL_LENGTH(tab_name,col_name):返回定义的列长度;兼容性:IQ&ASE
    26)LENGTH(exp):返回exp的长度;兼容性:IQ

    --测试代码
    SELECT LENGTH(123);  --结果:3
    SELECT LENGTH(12.3);  --结果:4
    SELECT LENGTH('123');  --结果:3
    SELECT LENGTH('你好');  --结果:2

    转换函数
    27)CONVERT(datetype,exp[,format-style]):字符转日期型 或DATE(exp);兼容性:IQ&ASE
    format-style值 输出:
    112 yyyymmdd
    120 yyyy-mm-dd hh:nn:ss

    --测试代码
    SELECT CONVERT(date,'20101231',112), --'2010-12-31',
    CONVERT(date,'20101231',120),        --null
    CONVERT(varchar(20),getdate(),120),   --'2018-04-27 15:03:12'
    CONVERT(varchar(20),getdate(),112),   --'20180427'
    CONVERT(date,getdate(),112),   --'2018-04-27'
    CONVERT(date,getdate(),120),   --'2018-04-27'
    getdate();      --'2018-04-27 14:55:43.851'

    28)CAST(exp AS data-type):返回转换为提供的数据类型的表达式的值; 

    --测试代码
    SELECT CAST(ID AS INTEGER) FROM A;    
    SELECT CAST(ID AS DECIMAL(18,X)) FROM A;  --X指小数位)

    日期函数
    29)DAY(date_exp):返回日期天值,DAYS(date_exp,int):返回日期date_exp加int后的日期;MONTH与MONTHS、YEAR与YEARS同理;

    --测试代码
    SELECT NOW(),  --'2018-04-27 15:40:53.439'

      DAY(NOW()), --4 DAYS(NOW(),1), --'2018-04-28 15:40:53.439'
    MONTH(NOW()), --27 MONTHS(NOW(),1), --'2018-05-27 15:40:53.439'
    YEAR(NOW()), --2018 YEARS(NOW(),1); --'2019-04-27 15:40:53.439'

    30)DATE(exp):将表达式转换为日期,并删除任何小时、分钟或秒;兼容性:IQ

    --测试代码
    SELECT DATE('2019-04-27 15:40:53.439');   --2019-04-27

    31)DATEPART(date-part,date-exp): 返回日期分量的对应值(整数);

    --测试代码
    select DATEPART(mm,'2018-04-27 14:55:43.851');   --4

    32)GETDATE():返回系统时间;

    --测试代码
    select now(),  --结果:2018-04-26 17:07:42.840
        GETDATE(); --结果:2018-04-26 17:07:42.840

    33)DATENAME(datepart,date_expr):以字符串形式返回date_expr指定部分的值,转换成合适的名字;

    --测试代码
    select DATENAME(mm,'2018-04-27 14:55:43.851');   --April
    select DATENAME(dd,'2018-04-27 14:55:43.851');   --27

    34)DATEDIFF(datepart,date_expr1,date_expr2):返回date_expr2-date_expr1,通过指定的datepart度量;

    --参数
    date-part   指定要测量间隔的日期部分。 
       date-part 取值:year、quarter、month、week、day 和 dayofyear 用 INT。hour、minute、second、millisecond 和 microsecond 用 BIGINT。
    date-expression-1   间隔的起始日期。从 date-expression-2 中减去此值,以返回这两个参数之间 date-part 的数量。 
    date-expression-2   间隔的结束日期。从此值中减去 Date-expression-1,以返回这两个参数之间 date-part 的数量。 
    
    --返回值
    year、quarter、month、week、day 和 dayofyear 用 INT。hour、minute、second、millisecond 和 microsecond 用 BIGINT
    --注释
    此函数计算两个指定日期之间日期部分的数量。结果是一个等于 date-expression-2 与 date-expression-1 之差的有符号整数值(以日期部分为单位)。
    当结果不是日期部分的偶数倍时,将会截断而不是舍入 DATEDIFF 函数的结果。
    当使用 day 作为日期部分时,DATEDIFF 函数返回两个指定时间之间(包括第二个日期但不包括第一个日期)的午夜数。 
    当使用 month 作为日期部分时,DATEDIFF 函数返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月第一天的个数。 
    当使用 week 作为日期部分时,DATEDIFF 函数返回两个日期之间(包括第二个日期但不包括第一个日期)的星期日的个数。 
    --测试代码
    SELECT DATEDIFF( hour, '4:00AM', '5:50AM' );   --1
    SELECT DATEDIFF( month, '1987/05/02', '1995/11/15' );   --102

    35)DATEADD(date-part,num-exp,date-exp):返回按指定date-part分量加num-exp值后生成的date-exp值;兼容性:IQ&ASE

    date-part日期分量代表值:
    缩写 YY QQ MM WK DD DY DW HH MI SS MS
     值 0001-9999  1-4  1-12  1-54  1-31  1--366  1-7(周日-周六)  0-23
     0-59
     0-59  0-999
    --测试代码
    select now(),                 --2018-04-27 16:40:48.173
            DATEADD(QQ,1,now()),  --2018-07-27 16:40:48.173
            DATEADD(WK,1,now()),  --2018-05-04 16:40:48.173
            DATEADD(DY,1,now()),  --2018-04-28 16:40:48.173
            DATEADD(DW,1,now()),  --2018-04-28 16:40:48.173
            DATEADD(MI,1,now()),  --2018-04-27 16:41:48.173
            DATEADD(MS,1,now());  --2018-04-27 16:40:48.174

    数值函数
    36)CEIL(num-exp):返回大于或等于指定表达式的最小整数;兼容性:IQ&ASE;

    --测试代码
    select CEIL(3.0);    --3
    select CEIL(3.2);    --4

    37)FLOOR(numeric_expr):返回小于或等于指定值的最大整数;

    --测试代码
    select floor(3.2);    --3
    select floor(3.0);   --3
    --floor(x),也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,
    --即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个值)。

    38)ABS(num-exp):返回数值表达式的绝对值;兼容性:IQ&ASE;

    39)ROUND(numeric_expr,int_expr):把数值表达式圆整到int_expr指定的精度;

    --测试代码
    SELECT ROUND(2.36589,2);  --2.37000
    SELECT convert(numeric(10,2),round(2.36589,2));     --2.37

    40)TRUNCNUM(1231.1251,2):截取数值;不四舍五入;

    --测试代码
    select TRUNCNUM(1231.1251,2);    --1231.1200
    select TRUNCNUM(1231.1251,-2);   --1200.000

    41)RAND([int_expr]):返回0-1之间的随机浮点数,可指定基值;

    --测试代码
    select RAND(0),  RAND(1),  RAND(5),  RAND(-2);  

    42)SIGN(int_expr):返回正+1,零0或负-1;

    --测试代码
    select SIGN('int_expr');   --nulkl
    select SIGN(23);   --1
    select SIGN(0);    --0
    select SIGN(-69);  -- -1

    43)SQRT(float_expr):返回指定值的平方根;  
    44)PI():返回常数3.1415926;
    45)POWER(numeric_expr,power):返回numeric_expr的值给power的幂;

    --测试代码
    select power(2,10);  --1024
    select power(2,1);  --2
    select power(2,0);  --1

    46)EXP(float_expr):给出指定值的指数值;  EXP(float_expr) = efloat_expr  。

    --测试代码
    select EXP(0);  --1
    select EXP(5);   --148.4131591025766

    ==================================常用DDL语句===========================================
    Sybase中DDL语句不能修改字段的数据类型,只能修改空与非空:
    1.删除列:
    ALTER TABLE table_name DELETE column_name;
    2.增加列:
    ALTER TABLE table_name ADD (column_name DATA_TYPE [NOT] NULL);
    3.修改列的空与非空:
    ALTER TABLE table_name MODIFY column_name [NOT] NULL;

    修改列的字段类型:ALTER TABLE table_name MODIFY column_name 列属性
    4.修改列名:
    ALTER TABLE table_name RENAME old_column_name TO new_column_name;
    5.快速建立临时表:
    SELECT * INTO [#]table_name FROM .....;
    6、修改表名:
    ALTER TABLE old_table_name RENAME new_table_name
    7.增加主键约束:
    ALTER TABLE tb_name ADD CONSTRAINT pk_name PRIMARY KEY(col_name,..)
    8.删除主键约束:
    ALTER TABLE tb_name DROP CONSTRAINT pk_name;
    9.建立自增长字段,与Oracle的SEQUENCE类似:
    CREATE TABLE TMP_001 (RES_ID INTEGER IDENTITY NOT NULL);
    10.添加表注释:
    COMMENT ON TABLE table_name IS '....';
    11.创建索引:
    CREATE INDEX index_name ON table_name(column_name);

  • 相关阅读:
    通知advice
    通知advice
    springmvc+mybatis需要的jar包与详解
    sass参考手册
    Mapper
    排序
    常见设计模式
    JavaScript之事件循环,宏任务与微任务
    字符串翻转
    eeeeeeeeeeeeeeeeeeeeee
  • 原文地址:https://www.cnblogs.com/yilong-/p/8954439.html
Copyright © 2011-2022 走看看