DB2中REVERSE函式的實現方法

2022-09-20 10:45:11 字數 1704 閱讀 9660

oracle:

sql> select reverse('1234') from dual;

reverse(

--------

4321

sql> select reverse(12121) from dual;

select revrgohpvdfvberse(12121) from dual

*第 1 行出現錯誤:

ora-00932: 資料型別不一致: 應為 char, 但卻獲得 number

說明oracle中reverse的引數是char型別,返回值也是char,到底是不是這樣,我們來驗證一下

sql> select length(reverse('1234    ')) from dual;

length(reverse('1234'))

-----------------------

8sql> select reverse('1234    ') from dual;

reverse('1234')

---程式設計客棧-------------

4321

如果返回型別是varchar,長度應該是4,所以返回值是char。引數型別也應該是是char。

sql server:

reverse函式的引數型別varchar或nvarchar,返回型別也是varchar或nvarchar

c:\>sqlcmd -s kermart -u sa -p sa -d master

1> select reverse('1234');

2> go

----

4321

(1 行受影響)

1> select reverse(1234);  --發生型別轉換,應該可以從執行計畫中看出來

2> go

------------

4321

(1 行受影響)

基於oracle,sql s程式設計客棧erver都內建了reverse函式,db2也應該有它的reverse函式,因為有一定的應rgohpvdfvb用場景。

create or replace function reverse

( p1 varchar(200)

) returns varchar(200)

specific "reverse"

language sql

deterministic

no external action

reads sql data

begin

declare v_str varchar(100) default '';

declare v_index integer; --定義下標

set v_index = length(p1);

while(v_index >= 1) do

set v_str = v_str||substr(p1,v_index,1);

set v_index = v_index - 1;

e程式設計客棧nd while;

return v_str;

end@

測試一下

select reverse('123456') from dual;

select reverse(1234) from dual; --看執行計畫,應該可以看到型別轉換

本文標題: db2中reverse函式的實現方法

本文位址:

DB2常用函式

1 char函式 char current date,iso 轉換成yyyy mm dd char current date,usa 轉換成mm dd yyyy char current date,eur 轉換成dd.mm.yyyy char current date,jis char curren...

DB2聚合函式

value函式 語法 value expression1,expression2 value函式是用返回乙個非空的值,當其第乙個引數非空,直接返回該引數的值,如果第乙個引數為空,則返回第乙個引數的值。coalesce函式 語法 coalesce arg1,arg2.coalesce返回引數集中第乙個...

DB2中db2命令引數說明

db2中db2命令引數說明 a 顯示 sqlca off c 自動落實 on d 檢索並顯示 xml 宣告 off e 顯示 sqlcode sqlstate off f 讀取輸入檔案 off i 顯示 xml 資料並帶有縮排 off l 將命令記錄到歷史記錄檔案中 off m 顯示受影響的行數 o...