Sqlserver与postgreSQL 区别差异
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
sqlserver----sql语句:
select * from DCS_RISK where 1=1 and SUPERINTENDENT_DPT_ID IN (select ID FROM ORG_DEPARTMENT WHERE CODEPATH LIKE'03.03.%') AND STATUS_NAME ='已确认' AND ISNULL(IS_CLOSED,0)=0 ORDER BY FIND_TIME DESC offset 0 rows fetch next 15 rows only
postgresql-----sql语句: select * from "DCS_RISK" where 1=1 and "SUPERINTENDENT_DPT_ID" IN (select "ID" FROM "ORG_DEPARTMENT" WHERE "CODEPATH" LIKE'03.02.%') AND "STATUS_NAME" ='已确认' and ("IS_CLOSED" IS NULL OR "IS_CLOSED"=0) ORDER BY "FIND_TIME" DESC offset 0 rows fetch next 15 rows only 区别: 1. postgresql表名与字段名要用双引号 否则将会变成小写字符. 解决办法: 表名 SQLSERVER-> DCS_RISK == POSTGRESQL->”DCS_RISK”; 字段名 SQLSERVER-> STATUS_NAME == POSTGRESQL->”STATUS_NAME” 备注:(sqlserver 表中 表名与字段名上添加“双引号”不会报错 并且没有“字符大小写”控制)。 解决办法: 表名 SQLSERVER-> DCS_RISK == POSTGRESQL->”DCS_RISK”; 字段名 SQLSERVER-> STATUS_NAME == POSTGRESQL->”STATUS_NAME”备注:(sqlserver 表中 表名与字段名上添加“双引号”不会报错 并且没有“字符大小写”控制)。 2. Sqlserver中ISNULL函数在postgresql 中是不能使用的! 解决办法:ISNULL(IS_CLOSED,0)=0 == ("IS_CLOSED" IS NULL OR "IS_CLOSED"=0) 5.PostgreSQL在做条件查询的时候是强类型校验的,但是SQL Server是弱类型。也就是说 用数值类型值 查询字符类型值 是报错的 需要用 单引号包起来呀 反之 用字符串数值 查询 数组类型值 是不报错的select * from t_user where code = 77771; // code 是字符类型 77771 是数据值型 执行就会报错 所以要用 ‘77771’ 单引号包起来 查询 6.SQL Server的查询如果末尾有空白的话,SQL Server会忽略但是PostgreSQL不会。 7.PostgreSQL和SQL Server的默认order by行为是不一致的。order by的字段如果是null,PostgreSQL会将其放在前面,SQLServer则将其放在后面。 8.SQL Server使用" + “号来拼接字符串,并且在2012版本之前不支持concat函数。PostgreSQL使用” || "来拼接字符串,同时支持concat函数。 该文章在 2025/8/7 9:18:43 编辑过 |
关键字查询
相关文章
正在查询... |