只給你來一點,我已經包括一些背景,爲什麼我試圖做到這一點:
我有一個表「CP」,其具有[ID]的字段,它爲每個註冊我來認識到這是從展開溶液,以基於作爲結果的雲移動標識符的多個帳戶將訪問相同的對象這將是最好的,如果他們都從1開始,因此而不是用我創立的int字段名爲標籤將在配合使用的帳戶ID找到每唯一的記錄ID字段ccount。
field | type
________________________
id | int
label | int
account_id | int
當註冊被打印出來,我希望他們能夠被顯示爲5位十六進制數,並在C#代碼,我可以簡單地做下面的屏幕上
value.ToString("X")
但是我的問題存在與添加新標籤字段之前的數據庫中的現有條目相關聯。 我已經找到了類似的幾個問題,但沒有回答我的問題
- Converting a paragraph to hex notatation, then back to string
- Converting a String to HEX in SQL
- Convert integer to hex and hex to integer
的問題
我有IDS領域(1,2,3,----,11,12,13,...等)值1-9可以簡單地合併花衣在爲value.ToString(「X」)將乾脆什麼也不做這些值但是如果我只是複製的值11,但是我想它返回「11」,因此將返回「B」,這是正確的11 HEX值I需要一個SQL腳本,這將轉換11 => 17(其爲0×11的十六進制值),使得當所述應用程序讀取它它將值11輸出到屏幕上。
這是隻發生一次轉換的退出ID的這就是爲什麼我想要一個SQL腳本,做這一切在一個批次,而不是其建成應用。
什麼,我想會是這樣的下面,這樣它假定的價值將是一個十六進制值,並將其轉換回爲int。
SELECT CONVERT(INT, '0x' + id) FROM cp;
我可以通過以下操作
int.Parse(value.ToString(),System.Globalization.NumberStyles.HexNumber).ToString()
UPDATE獲得在C#中正確的效果:我已經找到了解決這個問題對我的使用情況,但有些混亂,引發外界我將在數據庫中完成所有我的轉換,我通過上面的SELECT語句進行了假設。澄清這是轉換現有記錄的一次性事件。注意下面的語句不起作用,但stackoverflow不會讓我編輯原始語句,因爲更改少於15個字符。
UPDATE [dbname].[dbo].[cp] set [Label] = CONVERT(INT, '0x' + id);
表示層是c#,因爲我認爲會在問題中指出,我不是在SQL中進行HEX轉換。在整個板子中,我只想要一個轉換器來處理現有記錄,而且它似乎是有意義的使用sql查詢來做到這一點,然後業務層可以處理任何新的記錄。只需一次使用即可將代碼構建到業務層中。 – kamui 2012-01-09 12:11:30
另外,轉換的原因是可以顯示的字符數是5,小數點是有限的100,000個記錄,現在發現它們對於我們的情況來說太低,其中十六進制數可以有1,048,576條記錄。因此,不會有客戶需要查看base-10值的情況,不幸的是,由於字符混淆O => 0和l => 1,所以我不能使用base-36,所以我被HEX atm卡住但至少我現在給客戶提供了目前規格範圍內的可能記錄數量的10倍。 – kamui 2012-01-09 12:27:28