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 編輯過 |
關鍵字查詢
相關文章
正在查詢... |