我試圖模擬客戶端在Excel中生成的SQL中的函數。實際上,它們在其企業數據庫系統之一中具有唯一的10位數值(VARCHAR)作爲主鍵。在另一個數據庫中,它們需要一個唯一的5位字母數字標識符。他們希望這個5位字母數字值是10位數字的表示。所以他們在Excel中做的是將10位數字分成兩對,然後將這些對中的每一個轉換成十六進制值,然後將它們重新拼接在一起。SQL - 基於存儲爲VARCHAR的10位整數創建唯一的AlphaNumeric
的EXCEL方程爲:
= IF(VALUE(MID(A2,1,4))> 0,DEC2HEX(VALUE(MID(A2,3,2)))& DEC2HEX(VALUE (MID(A2,5,2)))& DEC2HEX(VALUE(MID(A2,7,2)))& DEC2HEX(VALUE(MID(A2,9,2))),DEC2HEX(VALUE(MID(A2,7,2))) 5,2)))& DEC2HEX(VALUE(MID(A2,7,2)))& DEC2HEX((VALUE(MID(A2,9,2)))))
我需要的SQL相當於這個的。當然,如果有人在那裏知道更好的方法來完成基於10位數字的「5位數字字母數字標識符」的目標,那麼我就是耳朵。
ADDED 2011/8/2
首先,謝謝給大家的答覆。很高興看到人們願意幫助,甚至享受它!基於所有的反應,我傾向於告訴我的客戶他們的意圖是健全的,只有他們的方法是不成問題的。我也想推薦一個解決方案。所以挑戰依然存在,只是稍作修改:
挑戰:在SQL中,取一個10位數獨特的NUMERIC字符串,並用儘可能少的字符在字符串中表示它。生成的字符串也必須是唯一的。
請注意,10位字符串中的前3-4個字符可能爲零,並且可能會剝離它們以縮短生成的字母數字字符串。不是必需的,但可能有幫助。