zoukankan      html  css  js  c++  java
  • sql常用格式化函数及字符串函数

    一.常用格式化函数

    1.日期转字符串

    select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS');    // mysql没有to_char()函数,pg有

    YYYY:年份

    MM:月份号(01-12)

    DD:一个月里的日(01-31)

    HH24:一天的小时数(00-23)

    MI:分钟(00-59)

    SS:秒(00-59)

    格式化格式可以由以上英文字母任意搭配,如可以是'YYYY-MM-DD HH24:MI:SS',也可以是'YYYY-MM-DD',也可以是'YYYYMMDD'。

    2.字符串转日期

    select to_date('2017-09-18','YYYY-MM-DD');    // mysql没有to_date()函数,pg有

    select to_timestamp('2017-09-18 22:41:50','YYYY-MM-DD HH24:MI:SS');    // mysql没有to_timestamp()函数,pg有

    待解析的字符串可以包含时分秒,也可以不包含时分秒。

    解析格式同样可以任意指定。

    to_date只会取到日期,不会取到时分秒,时间是该日的0点0分0秒,而不管待解析的字符串中时分秒是什么。

    to_timestamp会取到具体时分秒,如果待解析的字符串中只有日期,没有时分秒,则时间也是该日的0点0分0秒。

    3.数字转字符串

    select 123.45 || ''  //pg得到'123.45'字符串,mysql得到1。为啥??

    select to_char(123.5, '999999999999.9')  //得到'123.5'

    select to_char(123.5 , '9999999999999')  //得到'124'

    4.字符串转数字

    select '123.45' :: numeric num  //pg得到123.45,java类型为BigDecimal类型

    select '123.45' :: double precision num  //pg得到123.45,java类型为Double类型

    :: numeric 及 :: double precision 可以转换 null,但不能转换空字符串(sql会报错)

    select null :: numeric num  //pg得到null

    select null :: double precision num  //pg得到null

    二.常用字符串函数

    1.字符串拼接

    select 'ab' || 'c'  //pg得到'abc'字符串,mysql得到0。为啥??

    2.字串里二进制位的个数(1个字节等于8位)

    select bit_length('abc')  //pg和mysql都得到24

    1个英文字符占1个字节,3个英文字符占3个字节,24位

    select bit_length('中国人')  //pg和mysql都得到72

    1个中文字符占3个字节,3个中文字符占9个字节,72位

    3.字符串的长度

    select length('abc')   //pg和mysql都得到3

    select length('中国人')  //pg得到3,mysql得到9。为啥??

    4.字符串替换

    按索引位置替换:

    select overlay('Txxas' placing 'om' from 2 for 2)  //pg得到’Tomas‘字符串。mysql不支持

    overlay本身就是“覆盖“的意思。from后面的整数表示索引,从哪里开始替换。这里的索引从1开始,即第一个字符索引为1。如果from省略的话,表示从第一个字符开始替换。for后面的整数表示替换多少个字符,for不能省略。

    按字符串匹配替换:

    select replace('Txxas', 'xx', 'om')  //pg和mysql都得到'Tomas'字符串

    如果可以匹配到多个子字符串,则会全部替换

    5.取子字符串的位置

    select position('om' in 'Thomas')  //pg和mysql都得到3

    如果返回0,则表示不存在此子字符串。

    6.取子字符串

    select substring('Tomas' from 2 for 2)  //pg和mysql都得到'om'字符串

    from和for的含义同overlay()函数的一样

    7.删除字符串两边的空格

    select trim('   abc   ')  //pg和mysql都得到'abc'字符串

  • 相关阅读:
    Week03-面向对象入门
    Week02-Java基本语法与类库
    201621123056 《Java程序设计》第1周学习总结
    2.2确定一个字符是否在指定范围内
    2.1确定一个char包含何种字符
    1.自己写一个计算器demo
    1.23 确定一个Decimal或Double的整数部分
    1.5 测试奇偶性
    1.2度转化为弧度 1.3弧度转换为度
    1.1确定分数与浮点数值之间的近似相等性。
  • 原文地址:https://www.cnblogs.com/koushr/p/5873419.html
Copyright © 2011-2022 走看看