sql结果集限制与字符串拼接

来源:互联网 发布:国际战争知乎 编辑:程序博客网 时间:2024/05/17 09:00

1.限制结果集行数

1.1 MYSQL:使用LIMIT关键字用来限制返回的结果集,LIMIT放在SELECT语句的最后位置,语法为“LIMIT 首行行号,要返回的结果集的最大数目”

      例如:SELECT * FROM TABLENAME ORDER BY ID DESC LIMIT 2,5    //返回按照ID降序排列的从第二行开始(行号从0开始)的最多五条记录

1.2 MSSQLServer2000:提供TOP关键字用来返回结果集中的前N条记录,语法为“select top 限制结果集数目 字段列表 其余部分”

      例如:select top 5 * from tablename order by id desc;   //返回按照ID降序排列排在前5位的信息

                  select top 3 * from tablename where id not in (select top 5 * from tablename order by id desc) order by id desc;  //按照ID降序排列找出第6位到第8位的信息

1.3 MSSQLServer2005:几乎兼容所有的MSSQLServer2000的语法,在限制结果集行数上提供了窗口函数ROW_NUMBER(),可以计算第一行数据在结果集中的行号(从1开始),语法为“ROW_NUMBER OVER(排序规则)”,其中ROE_NUMBER()不能用在WHERE语句中

     例如:SELECT ROW_NUMBER() OVER(ORDER BY ID),NAME FROM TABLENAME    //返回有行数的数据

                 SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS ROWNUM,NAME FROM TABLENAME) AS A WHERE A.ROWNUM>=3 AND A.ROWNUM<=5;    //返回第3行到第5行的数据

1.4 Oracle:支持窗口函数ROW_NUMBER(),用法与MSSQLServer2005相同,不同的是rownum是Oracle中的保留字,定义别名时也不用例AS,rownum是Oracle默认的表示行号的列

     例如:SELECT * FROM TABLENAME WHERE ROWNUM<=6 ORDER BY ID DESC;     //返回按ID降序排列的前6条信息

2.字符串的拼接

2.1 MYSQL:使用CONCAT函数,语法为CONCAT(str1,str2,...),还有一个是CONCAT_WS(separator,str1,str2,...),此可在待拼接的字符串之间加入指定的分隔符,均可支持多个参数

     例如:SELECT CONCAT('我是',‘拿 来’,'测试的') FROM TABLENAME;   //返回‘我是拿 来测试的’

                 SELECT CONCAT_WS(',','AA','BB','CC') FROM TABLENAME;    //返回‘AA,BB,CC’

2.2 MSSQLServer:使用“+”来拼接字符串

     例如:SELECT ID+NAME FROM TABLENAME;     //返回ID与NAME拼接后的字符串,若ID为001,NAME为AAA,则返回001AAA

2.3 Oracle:使用‘||’进行字符串的拼接,也可以使用CONCAT()函数进行拼接,但只支持两个参数

     例如:SELECT ID||NAME FROM TABLENAME;    //返回ID与NAME拼接后的字符串,若ID为001,NAME为AAA,则返回001AAA

                 SELECT CONCAT('NAME:',NAME) FROM TABLENAME;   //若NAME为BBB,则返回NAME:BBB


                



原创粉丝点击