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"