2013-10-15 69 views
2

從guid列獲取數值的最佳方法是什麼?將guid轉換爲數值

我想這條線,但我得到:

ORA-00904: "HASHBYTES": invalid identifier 
00904. 00000 - "%s: invalid identifier" 

查詢低於:

SELECT HASHBYTES('MD5',CAST(prod AS varchar2(30))) 
FROM PRODS; 

請指點。

+1

什麼數值?您是否試圖將這36個字符轉換爲18十六進制值,然後轉換爲小數?我很好奇,一旦它是十進制數字,你將如何處理這個值? – AgRizzo

+0

你的散文說數值,但你的代碼說varchar2。這是不一致的。 –

回答

6

問過甲骨文不具備HASHBYTES功能。您可以使用TO_NUMBER(hex-string, 'xx')將十六進制轉換爲十進制,但在格式字符串中必須包含足夠多的x字符才能覆蓋輸入值。在GUID的情況下,即32 x個字符:

SELECT TO_NUMBER(prod, RPAD('x', 32, 'x')) 
FROM PRODS; 
+0

非常感謝。這工作完美。我希望你有一個美好的一天 – Chris

1

這將MD5哈希(十六進制)轉換爲十進制數

SELECT CONV('MD5', 16, 10) 
FROM PRODS; 
+0

轉換更新表? – user2483797

+0

是否要將GUID轉換爲字符串或散列爲字符串?我的回答是你的問題標題。 – Legionar

+0

我在生活中的目的是爲了獲得02122304813AEF67342CB1如果可能的話,就像數字91一樣。 – user2483797

1

的GUID真的不借給自己扯到NUMERICS。 但是,如果需要,您可以做到。

這個問題已經在this