2012-08-24 47 views
2

首先,我在一個MySQL數據庫中工作。我有一張表格,其中的列值存儲爲非常長的十六進制文本(在上下文中,它包含有關人們計算機規格的信息 - 它們的dxdiag文件內容)。我將需要搜索特定規格(例如,對於具有2個或更多RAM的人)十六進制文本字符串和查找特定信息

例如,在該示例中,該大文本中的相關行可能會讀取「內存:4096MB內存」。

當然,也有很多的其他信息,例如處理器,圖形卡等

所以我想有我需要兩個步驟: 1)要正確定位,其中的有關部分是(在這種情況下,「記憶:」)。 2)以一種方式組織它,我可以將實際的RAM值識別爲一個數字,然後查詢我想要的特定條件。

所以我想知道最有效的方法和代碼去做什麼?

謝謝!

P.S.如果你有興趣,下面是我所擁有的數據的部分例子。你可以把它轉換使用本網站的文字:http://www.string-functions.com/hex-string.aspx

2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a53797374656d20496e666f726d6174696f6e0d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a54696d65206f662074686973207265706f72743a20382f31362f323031322c2031343a31323a32320d0a202020202020204d616368696e65206e616d653a20544553540d0a2020204f7065726174696e672053797374656d3a2057696e646f7773203720456e74657270726973652036342d6269742028362e312c204275696c642037363031292053657276696365205061636b20312028373630312e77696e377370315f6764722e3132303530332d32303330290d0a20202020202020202020204c616e67756167653a20456e676c6973682028526567696f6e616c2053657474696e673a20456e676c697368290d0a53797374656d204d616e7566616374757265723a2044656c6c20496e632e0d0a2020202020202053797374656d204d6f64656c3a20507265636973696f6e20576f726b53746174696f6e20543735303020200d0a20202020202020202020202020202042494f533a2050686f656e697820524f4d2042494f5320504c55532056657273696f6e20312e3130204131320d0a2020202020202020202050726f636573736f723a20496e74656c2852292058656f6e285229204350552020202020202020202020583536363020204020322e383047487a2028362043505573292c207e322e3847487a0d0a202020202020202020202020204d656d6f72793a2031323238384d422052414d0d0a417661696c61626c65204f53204d656d6f72793a2031323238364d422052414d0d0a20202020202020202020506167652046696c653a20333631314d4220757365642c2032303935374d4220617661696c61626c650d0a202020202020202057696e646f7773204469723a20433a5c77696e646f77730d0a20202020446972656374582056657273696f6e3a20446972656374582031310d0a445820536574757020506172616d65746572733a204e6f7420666f756e640d0a20202055736572204450492053657474696e673a205573696e672053797374656d204450490d0a2053797374656d204450492053657474696e673a2039362044504920283130302070657263656e74290d0a2020202044574d20445049205363616c696e673a2044697361626c65640d0a20202020204478446961672056657273696f6e3a20362e30312e373630312e313735313420363462697420556e69636f6465

+0

爲什麼要將文本存儲爲十六進制數據。如果這有幫助,請嘗試使用MySQL BLOB類型。 –

+0

謝謝科爾。它是這樣給我的,但我可以試着問問業主。將它存儲爲BLOB類型有什麼好處? –

+0

任意長度(達到該類型提出的某個限制)以及將數據存儲在數據庫中的能力(但圖像和文件應該保留在數據庫之外) –

回答

0

我遇到了類似的問題,請參見下面我的問題,我找到了解決你的問題的一部分。您可以將十六進制強制轉換爲varbinary,然後轉換爲varchar,而使用SQL時不會有太多困難。更大的問題在於下一級,除了前128個ASCII字符,它們幾乎是所有編碼的直接轉換,如果沒有或不能使用,有很多方法可以編碼爲二進制或十六進制原始轉換工具存在許多挑戰,其中所有解決方案可能都是獨一無二的。

How to replace non-standard Unicode with Space or Tab using SQL