記錄程式oracle到pgsql的轉換

2021-10-10 09:15:56 字數 1416 閱讀 9894

oracle轉pgsql:

todate  會省略時分秒  需要時分秒使用to timestamp

取json中的資料 使用 ->> 或者 ->

->>取回來的是text型別,->取回來的是json型別

coalesce 代替nvl2

json中取出的資料不能直接和其他字段比較,需要顯示的轉換型別  ::varchar

**塊需要在開頭增加 do $$, 末尾增加 $$

pgsql中沒有varchar2、clob、number,改為varchar,json、numeric

pgsql中的函式 如果使用的是json裡取得資料,也需要顯式轉換型別

pgsql中沒有nvl2函式,有nvl函式或者coalesce。使用nvl函式,也需要顯式轉換型別 select nvl(null,'無'::text) from dual

pgsql to_char函式 時間如果是json中的時間需要定義型別 select to_char(('2020-10-25 ')::timestamp, 'yyyy-mm-dd') from dual

pgsql 游標的使用與 oracle不同

游標名稱 - cursor關鍵字 - for -query

tmp_xm cursor for select bm2 from **** where bmlx='xmbm' and bm in ('');

單個游標變數可以正常使用,多個游標變數會報未知的問題(暫未找到解決方案),可以使用迴圈 for in

for x in(select * from ) loop

***;

end loop;

補充乙個需要按逗號或其他字元分割乙個字串,然後再在儲存處理的方法 regexp_split_to_table

do 

$$declare

v_bmbh varchar(20

);v_jgbh varchar(20

);x record;

begin

v_jgbh:=

'123'

;for x in

(select regexp_split_to_table(

'1,2,3'::text

,','::text

) id from dual)

loop

select bmbh into v_bmbh from pt_bm where id = x.id::numeric

and jgbh = v_jgbh;

raise notice 'v_bmbh:%'

, x.id;

endloop

;end

;$$

//後續補充

以上,如有疏漏不足之處,請指正。

Oracle中查詢第N到M條記錄

select from select rownum rn t.from table table t where rn between n and m 注 rownum 必須重新命名為rn或者是其他的乙個虛擬名字 以下是更新第n到m條的記錄時所需要注意的問題 update table t set t....

oracle選擇從m條到n條的記錄

oracle選擇從m條到n條的記錄 此問題的推薦答案 如何實現分頁提取記錄方法1 oracle的rownum偽列返回查詢的行序號。例如要查詢表的前10條記錄,可以使用 select from tablename where rownum 10 但是要返回第11 第20條記錄,嘗試以下的語句 sele...

ORACLE 新增記錄 更新記錄

開發中偶爾需要新增一條記錄或修改一條記錄的幾個字段,語法中有微妙的區別。由於不是經常寫,久不寫就忘記了,而又要重新查詢或除錯。新增記錄語法 新增記錄 仿照已有表記錄 insert into t x t t.field 1,t.field 2,t.field 3,t.field 4,t.field 5...