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...