[英]Edit DB2 data on specific column
提前感謝您的幫助...我必須在我的 DB2 數據庫上編輯一些數據 - 使用版本 11。基本上我有一個包含多個條目的列,如下所示:<GUID=b92c4c2340953g98hn298743n5634234> 我需要它們查看像這樣:b92c4c23-4095-3g98-hn29-8743n5634234
注意** 我正在嘗試創建一個 function 接受值 A (<GUID=b92c4c2340953g98hn298743n5634234>) 並返回值 B (b92c4c23-4095-3g98-hn29-8743n5634234)
使用 substring function SUBSTR
如下:
SUBSTR(SUBSTR(your_column, 1, LENGTH(your_column) - 1), 7)
例子:
with t(s) as (
values '<GUID=b92c4c2340953g98hn298743n5634234>'
), strip(s) as (
select substr(s,7,length(s)-7) from t
)
select substr(s,1,8) || '-' || substr(s,9,4) || '-' || substr(s,13,4) || '-'
|| substr(s,17,4) || '-' || substr(s,21)
from strip;
1
---------------------------------------------------------------
b92c4c23-4095-3g98-hn29-8743n5634234
如果你經常這樣做,你可能想要創建一個 function:
create function trim_guid(s varchar(39))
returns varchar(36)
return with strip(s) as (
values substr(s,7,length(s)-7)
) select substr(s,1,8) || '-' || substr(s,9,4) || '-'
|| substr(s,13,4) || '-' || substr(s,17,4) || '-'
|| substr(s,21) from strip
with t(s) as ( values '<GUID=b92c4c2340953g98hn298743n5634234>' )
select trim_guid(s) from t
1
------------------------------------
b92c4c23-4095-3g98-hn29-8743n5634234
Db2 有一些用於處理 GUID 值的內置工具。 有一些函數可以將它們轉換為二進制和字符表示。
如果您的數據是有效的 GUID,您可以使用以下示例返回字符 GUID 表示。
VALUES
VARCHAR_FORMAT_BIT(
CAST(HEXTORAW(SUBSTR('<GUID=d83d6360181811db9804b622a1ef5492>',7,32)) AS CHAR(16) FOR BIT DATA)
, 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
)
將返回
d83d6360-1818-11db-9804-b622a1ef5492
不用說,將數據存儲為BINARY(16)
(又名CHAR(16) FOR BIT DATA
)通常比使用VARCHAR(32)
更有效。 如果 GUID 本身的效率比 integer 序列標識符低(從數據庫的角度來看)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.