工作使用TD数据库,转载常用语句方便查看
从参考文章中截取工作中经常的语句,不定时更新
参考文章1:https://blog.csdn.net/u010020099/article/details/82219967
需求1.数据源表某大字段分别截取需要的部分,入仓某表多个字段
解决方案:使用substr()函数
Substr(exp,m,n)-- 从字段exp的第m位开始截取,截取长度为 n
例如:substr(‘20141023’,1,6)结果:‘201410’
ps1.字段截取+类型转换:(字符型转日期型)
ps2.在1的基础上加上对截取内容的判断,若不符要求则赋予默认值
2.coalesce(a,b,c,…)函数,从第一个参数开始取非空值,如果第一个为空,取第二个,第二个为空继续往下取,直到取到第一个不为空的数据
ps.null值其他处理
zeroifnull(xx)
coalesce(xx,0)
coalesce(xx,’’)
3.minus,在查询结果1中删除包含查询结果2的数据
select query1 minus select query2;
4.expect, 第一个结果集中排除第二个结果集?(验证下)
5.create table时字段属性包含 casespecific,即大小写敏感
create table xxxx
(a char(2) character set Latin casespecific,
…
)
6.create table时,如果PPI字段同时是主键,即包含在PI&PK中,此时create table会报错,错误码: 3519
解决方案:
① change pi&pk to upi (unique primary index)
…
)
UNIQUE PRIMARY INDEX XAAA01 (a,b,c,d);
——建议使用方案1
②在pi里面remove其中一个字段 ——不太好,这个字段在src tab里面是主键
③create table without pk ,then alter pk into this table ——不推荐
7.“?” 代表null值,如果是在sql assistant里面可以更改设置,tools——options——data format
“display this string for null data value”:“?”或者空“”
8.字符串转数值,并取绝对值进行排序
order by abs(cast(p_version as number)) desc
9.截取字符串拼接成日期
cast(
substr(a,1,4)||’-’|| substr(a,5,2)||’-’|| substr(7,2)
as date format ‘YYYY-MM-DD’) AS XXX_DT
10.decimal转char和varchar
①直接强转可以保留小数位,例如 cast(3.14 as varchar(30))
②一般不保留小数位,譬如decimal(x,0)
区别9无零抑制十进制数,Z有零抑制十进制数
select a,cast(a as char(6)) as A1,
cast(cast(a as format ‘9(6)’) as char(6) as B1,
(a (format ‘9(6)’) (char(6)) ) as B2,
cast ( cast ( a as format ‘Z(6)’ ) as char(6) ) as C
from …
结果:
a A1 B1 B2 C
869 869. 000869 000869 869
6243 6243. 006243 006243 6243
11.decimal 转date
使用VALIDYYYYMMDD,需要先将decimal转为integer
如:
cast(validyyyymmdd( cast(b as integer )) as date format ‘YYYY-MM-DD’ )