PostgreSQL、SqlServer、MySql语法比较

PostgreSQL、SqlServer、MySql语法比较

--获取当前时间
SqlServer:getdate()
MySql:now()
PostgreSQL:now()

--获取时间类型的年月日
SqlServer:datepart(yyyy,getdate())/*获取年*/--yyyy-MM-dd hh:mm:ss第一个参数替换分别获取年、月、日、小时、分钟、秒
MySql:YEAR(NOW())/*获取年*/MONTH(NOW())/*获取月*/DAY(NOW())/*获取日*/HOUR(NOW())/*获取小时*/MINUTE(NOW())/*获取分钟*/SECOND(NOW())/*获取秒*/
PostgreSQL:to_char(now(),'yyyy')/*获取年*/--第二个参数替换获取年、月、日、小时、分钟、秒;还可以获取yyyy-MM、yyyy-MM-dd组合格式的,因为第二个参数是字符串缺陷是无法获取mm(分钟)

--字符串拼接
SqlServer:+
MySql:concat(str1,str2,...)
PostgreSQL:||

--截取字符串substring(str1 , start , length)都可以用
--查找替换字符replace(str1,str2,str3)str1原字符串,str2要查找的字符串,str3要替换的字符串,都可以用

--删除指定长度的字符并插入内容  str1要修改的字符串,str2要插入到str1的字符,start开始删除的字符位置(从1开始),length要删除的字符长度
SqlServer:stuff(str1,start,length,str2)--如果str2为空字符串就只是删除不替换
MySql:REPLACE(str1,str2,str3)--str1原字符串,str2要查找的字符串,str3要替换的字符串
PostgreSQL:string_agg(str1,str2)--字符串的拼接(列转行)str2是str1和下一个str1中间的分割符号

--判断字符是否为空(如果value1不为空,结果返回value1;如果value1为空,结果返回value2)
SqlServer:isnull(value1,value2)
MySql:isnull(value1,value2)
PostgreSQL:COALESCE(value1,value2)

--取前几条数据  num(条数)
SqlServer:top  --示例:select top num * from table
MySql:top --示例:select top num * from table
PostgreSQL:limit --示例:select * from table limit num

--sql语句结束后需要不需要加;
SqlServer:--可以不加
MySql:--必须加;
PostgreSQL:--必须加;

--列名与关键字冲突
SqlServer:--使用[]
MySql:--使用``
PostgreSQL:--使用""

--生成GUID
SqlServer:newid()
MySql:uuid()
PostgreSQL:gen_random_uuid()--需要安装uuid-ossp 扩展pgcrypto 扩展

--分页  pageSize(一页显示条数)pageIndex(由第几条开始,最小为0)
SqlServer:row_number()--示例:select top pageSize * from (select row_number() over(order by sno asc) as rownumber,* from table) as table where rownumber>((pageIndex-1)*pageSize)--如果pageIndex为0就不用-1了
MySql: limit pageSize offset pageIndex --示例:select * from table limit pageSize offset pageIndex
PostgreSQL:--和MySql用法一样

--获取字符串长度
SqlServer:len()
MySql:char_length()
PostgreSQL:char_length()

--PostgreSQL没有nvarchar(),

--条件查询  like
SqlServer:--不区分大小写
MySql:--不区分大小写
PostgreSQL:--区分大小写,如果想要不区分大小写,可以用ilike,或者通过upper、lower转换后进行比较

--条件查询  弱类型匹配
SqlServer:--弱类型
MySql:--弱类型
PostgreSQL:--查询时会进行强类型校验

--条件查询  末尾有空格
SqlServer:--忽略
MySql:--忽略
PostgreSQL:--不会忽略

--order by desc时
SqlServer:--如果order by 字段为null,会在后面显示
MySql:---如果order by 字段为null,会在后面显示
PostgreSQL:--如果order by 字段为null,会在前面显示,如果要将null显示在前面的话,可以用nulls last示例:select * from table  order by column desc nulls last

版权声明:本文为MrGuoXianSen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。