SQL中字符截取、拼接 、转换常用方法

mysql 中字符截取、拼接:

  • int类型截取字段 常用函数left()和right():
    例如day_id 是类似20190415的 int型数据,若要截取前六位获取201904:left(day_id,6)
    若要截取后四位获取0415 : right(day_id,4)

  • string型截取字段 常用函数substing()和substr():
    例如day_id 是类似'20190415'的 string型数据,若要截取前六位获取201904:substring(20190415,1,6)

  • 字符拼接 常用函数CONCAT()
    例如 day_id 是类似20190415的 int型数据,要获取2019年04月15日 格式的数据:CONCAT(left(day_id,4),'年',right(left(day_id,6),2),'月',right(day_id,2),'日')

DB2 中字符截取、拼接:

  • int类型截取字段 常用函数left()和right():
    例如day_id 是类似20190505的 int型数据,若要截取前六位获取201905:left(day_id,6)
    若要截取后四位获取0505 : right(day_id,4)

  • string型截取字段一般用substr()和substring():
    例如 DT_DAY_ID 是类似'2019-05-05' string型的数据,截取后面5位获取月日:SUBSTR(DT_DAY_ID , 6,5) = '05-05'
    截取后面两位获取日:SUBSTR(DT_DAY_ID , 9,2) = '05'
    可以通过SUBSTR(DATE(DT_DAY_ID )+1 DAYS, 1,7) <> SUBSTR(DT_DAY_ID , 1, 7)来判断是否月末

  • 字段拼接常用 || 符号
    例如DT_DAY_ID 是类似20190505 int型的数据,转换成类似2019年05月05日的数据:left(DT_DAY_ID,4) || '年' || right(left(DT_DAY_ID,6),2) || '月' || right(DT_DAY_ID,2) || '日'
    还可以通过DT_DAY_ID还可以自定义半年ID,DT_HALFYEAR_ID(3201901、3201902格式):DT_HALFYEAR_ID=case when right(${DT_DAY_ID},2)>6 then 3 || left(${DT_DAY_ID},4) || '02' else 3 || left(${DT_DAY_ID},4) || '01' end 或者季度ID ,DT_QUARTER_ID(4201901 — 4201904):DT_QUARTER_ID=case when right(${DT_DAY_ID},2) between 01 and 03 then 4 || left(${DT_DAY_ID},4) || '01' when right(${DT_DAY_ID},2) between 04 and 06 then 4 || left(${DT_DAY_ID},4) || '02' when right(${DT_DAY_ID},2) between 07 and 09 then 4 || left(${DT_DAY_ID},4) || '03' else 4 || left(${DT_DAY_ID},4) || '04' end

SQL中字符转换、替换:

  • 字符类型转换 常用函数cast()
    例如 day_id 是类似20190415的 int型数据,转换成string型的数据:cast(day_id as string) 若要截取字段有: substring(cast(day_id as string),1,4)

  • 字符替换常用函数 replace() ,另外去除 string 字段中的空格 常用函数trim()、ltrim()、rtrim()
    例如 day_id 是类似2019 04 15的string型数据
    去除空格 :trim(day_id)repalce(day_id,' ','')
    其中ltrim(string) 去除字符前的空格,rtrim(string) 去除字符后的空格。

备注:Excel中截取、替换字符

  • 如果是Excel中数据格式一致,可以用=MID(A2,2,22)来截取字段,从A2列的第2位开始截取,共截取22位
  • 截取前6个:=LEFT(A2,6),截取A2前六个字
  • 截取最后三个字:=RIGHT(A2,3)
  • 假设A列,共10位字符,最后三位统一替换为比如abc,在B1输入=replace(A1,8,3,"abc") 或者 =left(A1,7)&"abc"
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值