博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用Mysql或者PostGresql或者Greenplum的语句总结。
阅读量:5913 次
发布时间:2019-06-19

本文共 4830 字,大约阅读时间需要 16 分钟。

1、使用mysql的union all可以同时查询出所有自己想要查询数据表的数据量。

1 select 'user' as tablename, count(*) from user2 union all select 'teacher' as tablename, count(*) from teacher3 union all select 'person' as tablename, count(*) from person4 union all select 'student' as tablename, count(*) from student5 order by tablename

2、使用mysql的union all可以同时查询出所有自己想要查询数据表的数据量。添加上限制条件进行查询。

1 select 'user' as tablename, count(*) from user                                         where update_time>'2018-10-09'2 union all select 'teacher' as tablename, count(*) from teacher                         where update_time>'2018-10-09'3 union all select 'person' as tablename, count(*) from person                           where update_time>'2018-10-09'4 union all select 'student' as tablename, count(*) from student                         where update_time>'2018-10-09'5 order by tablename

3、使用Postgresql或者Greenplum的union all可以同时查询出所有自己想要查询数据表的数据量。添加上限制条件进行查询。

1 select 'user' as tablename, count(*) from user                                          where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')2 union all select 'teacher' as tablename, count(*) from teacher                          where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')3 union all select 'person' as tablename, count(*) from person                            where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')4 union all select 'student' as tablename, count(*) from student                          where update_time>to_date('2018-10-09 01', 'yyyy-mm-dd hh24')5 order by tablename

4、在Mysql数据库中,如果某个字段是换行的,如何去掉换行的字段,然后正常查询出来。

    注意:char(10)换行键、char(13)回车键。
    4.1、查询出多个数据表某条记录可能含有换行符的记录。
        CONCAT()函数用于将多个字符串连接成一个字符串。

1 select * from user where name like CONCAT("%",char(13),"%")2 union all select * from teacher  where name like CONCAT("%",char(13),"%")3 union all select * from person  where name like CONCAT("%",char(13),"%")4 union all select * from student  where name like CONCAT("%",char(13),"%");

    4.1、然后将换行和回车进行替换,将换行和回车换成''。这样做就将回车和换行替换完成。

        replace(object,search,replace),把object中出现search的全部替换为replace。

1 select REPLACE(REPLACE(name, char(10), ''), char(13), '') as name from user where name like CONCAT("%",char(13),"%")2 union all select REPLACE(REPLACE(name, char(10), ''), char(13), '') as name from student where name like CONCAT("%",char(13),"%")3 union all select REPLACE(REPLACE(name, char(10), ''), char(13), '') as name from person where name like CONCAT("%",char(13),"%")4 union all select REPLACE(REPLACE(name, char(10), ''), char(13), '') as name from student where name like CONCAT("%",char(13),"%");

    4.3、可以将回车符和换行符转换为特殊的字符。

        -- 将char(10)换行键,char(13)回车键换成@#r;和@#n;

1  select REPLACE(REPLACE(name, char(10), '@#r;'), char(13), '@#n;') as name from user where name like CONCAT("%",char(13),"%")

        如果需要有需要,可以将特殊的字符再转换为回车符和换行符。

        -- 将@#r;和@#换成nchar(10)换行键,char(13)回车键;

1  select REPLACE(REPLACE(name, '@#r;', char(10)), '@#n;', char(13)) as name from user where name like CONCAT("%",char(13),"%")

5、    查询出最大时间,可以根据这个来进行批次插入数据和批次导出数据。

    5.1、Postgresql和Greenplum的用法:
        COALESCE()的用法,如果第一个参数不为null,咋返回第一个参数,否则返回第二个参数。

1 select '数据表名称' as table_name, 5 as part, COALESCE(max(update_time), now()) as next_time from schema.数据表名称

5.2、Mysql的用法:

        ifnull()的用法,如果第一个参数不为null,咋返回第一个参数,否则返回第二个参数。

1 select 'user' as table_name,ifnull(max(update_time),now()) as update_time from user;

6、MYSQL或者Postgresql和Greenplum的Case...When的用法基本相同。

    6.1、Case expr when v1 then r1 when v2 then r2 else rn end。该函数表示,如果expr值等于某个vn,则返回对应位置then后面的结果,如果所有值都不相等,则返回else后面的rn。

1  select case 2 when 1 then 'one' when 2 then 'two' else 'more' end;

    6.2、case when v1 then r1 when v2 then r2 else rn end。该函数表示,某个vn为true的时候,则返回对应位置then后面的结果,如果所有值都不相等,则返回else后面的rn。

1  select case when 1 < 0 then 'true' when 1 > 0 then 'false' else 'more' end;

7、查询最大批次号,如果不存在根据规则生成一个批次号。

    Postgresql和Greenplum使用to_number()函数来转换成整数、to_char()将数字转为字符串。mysql无此函数。
    完整的例子如下所示:

1 select to_char(to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||'00000'), '9999999999999') + 1, '9999999999999') from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'

    步骤一:获取最大的批次号:

1 select max("Cd_batch") from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'

    步骤二:判断如果最大批次号如果为null,根据规则生成一个批次号。

1 select COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||'00000') from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'

    步骤三:将生成的字符串转换为数值类型numeric的,长度为第二个参数的长度,并且批次号加1。这样下发的数据的批次号就是叠加后的批次号。

1  select to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||'00000'), '9999999999999') + 1 from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'

    步骤四:将生成的数值numeric类型转换为字符串类型的。

1 select to_char(to_number(COALESCE(max("Cd_batch"), to_char(now(), 'yyyyMMdd')||'00000'), '9999999999999') + 1, '9999999999999') from schema.数据表名称 where "TableName"='数据表名称' and "Cd_source"='数据来源'

 

 

 

待续......

转载地址:http://sglpx.baihongyu.com/

你可能感兴趣的文章
对Node的优点和缺点提出了自己的看法?
查看>>
序列化有关内容
查看>>
Jmeter变量参数化及函数应用
查看>>
代码整洁之道-第9章-单元测试-读书笔记
查看>>
195. Spring Boot 2.0数据库迁移:Flyway
查看>>
集成支付宝SDK时错误的解决办法
查看>>
C++ ssd5 12 optional exercise2
查看>>
如何调用带返回值类型的函数
查看>>
数据库设计,表与表的关系,一对一。One-To-One(1)
查看>>
Building QT projects from the command line
查看>>
微信小程序直播,腾讯云直播+微信小程序实现实时直播
查看>>
JSP
查看>>
新工作
查看>>
Educational Codeforces Round 24-A B C D 思维
查看>>
[中国企业报]小灵通“末路”
查看>>
女士流行春装,时尚女装,韩版女士春装
查看>>
BZOJ5289 & 洛谷4437:[HNOI/AHOI2018]排列——题解
查看>>
Django的模板系统
查看>>
【总结整理】关于二手交易平台的讨论
查看>>
移动APP安全测试
查看>>