一、 sql 多个字段拼接
My SQL:,随机查询语句 1 条
select * from 表名 order by rand() limit 1;
SQL Server,随机查询语句1条
select top 1 * from 表名order by newid();
Oracle,随机查询查询语句1条
select * from( select * from 表名 order by dbms_random.value) where rownum = 1;
三、四舍五入
1..整数部分超过三位的时候以逗号分割,并且返回的结果是string类型的。
SELECT FORMAT(10,2);------------->10.00 SELECT FORMAT(10.234,2);------------->10.23
SELECT FORMAT(103134,2);------------>103,134.00
2.返回值是数值类型
select ROUND(10, 2);------------->10 select ROUND(10.234,2);------------->10.23
select ROUND(103134.1221, 2);----------->103134.12
四 、mysql isnull() /IFNULL()
select isnull(NULL) --------->1 select isnull("123")-------->0
select isnull(123)-------->0 select isnull(1/0)-------->1
_____________________________________________________________________________________________
select IFNULL(NULL,0) ---------->0 select IFNULL("123",0)------>123
select IFNULL(1/0,10);----------->10
五 、模糊查询
mySql:
1、查询 userName 中有'刘'的所有列
SELECT * FROM tuser WHERE userName LIKE '%刘%'
2、查询 userName 中有'刘'和'三'的所有列
SELECT * FROM tuser WHERE userName LIKE '%刘%' AND userName LIKE '%三%'
3、查询 userName 中有'刘'和'五' 且'刘'在'五' 前面的所有列
SELECT * FROM tuser WHERE userName LIKE '%刘%五%'
六、分页
SELECT id,code,createtime FROM tab WHERE year(createtime)='2015' ORDER BY createtime LIMIT 0,10
<!-- 按照季度统计-->
SELECT QUARTER(NOW()) #查询季度 结果为当前的季度 返回结果1-4 之间
SELECT id,code,createtime FROM tab WHERE quarter(createtime) =1 LIMIT 0,10
<!-- 按照时间查询 -->
#UNIX时间戳,每个时间对应了一个唯一的UNIX时间戳,该时间戳是从'1970-01-01 00:00:00' 为0开始计时,每秒增加1
#将时间转化为时间戳。(date 类型数据转换成 timestamp 形式整数) 没传时间参数则取当前时间的时间戳
SELECT id,code,createtime FROM tab WHERE UNIX_TIMESTAMP(createtime) >= UNIX_TIMESTAMP('2016-03-15') LIMIT 0,10