2012-11-07 78 views
3

我在Access中運行了「分析性能」功能,它有一個「想法」來提高性能;訪問說,我應該將字母數字混合的項目轉換成long integer(具體名稱來自想法),這些項目看起來像這樣12BB1-DF740§text數據類型。 Access是否正確可以提高性能是次要的,因爲長整數是否可以存儲字母。可以長整型存儲字母嗎?

[關於數據 - 提供給我的數據中的連字符總是出現在該位置;字母總是AF]

從我可以告訴,w3schools是表明Long只會店數

Long - 允許-2,147,483,648和2,147,483,647

  • 之間的整數我混合數據類型? (此外,當我拉起設計視圖時,它只提供number作爲數據類型;沒有longlong integer
  • 可以Long Integer存儲字母嗎?
  • 如果我的列已經填充,並且我轉換了數據類型,我會丟失數據嗎?
+0

您可以十六進制值(16進制)轉換爲十進制值(基數爲10),並將結果在一個長整型(如果十六進制值不超限長整型)。然而,你的十六進制值('12BB1-DF740')實際上不是HEX值,因爲它有一個破折號。您不能將其轉換爲長整型,然後將其轉換回HEX值並在同一位置放置短劃線,而無需手動插入短劃線。爲什麼它使用5個十六進制數字,一個短劃線,然後是5個十六進制數字?好像維持它需要它在一個非常特殊的方式格式化的應用程序 - 如果轉換成一個長整型將打破應用... –

回答

3

您可以通過將這些值分成2個長整型列來存儲這些值。然後,當您需要原始文本表單時,將它們的Hex()值與之間的破折號連接起來。

? Hex(76721) & "-" & Hex(915264) 
12BB1-DF740 

但是我不明白爲什麼值得這樣做。偶爾性能分析器的建議對我來說根本沒有意義;這是這種情況。

2

我從來沒有遇到過這個,但它看起來像它認爲你的字符串是十六進制數字。

如果你從來沒有AF以外的其他字母,那麼你可以將它們存儲爲long,然後使用Hex()函數轉換回來,但這似乎是強大的功能和我會避免的東西,除非你真的非常渴望剔除一些性能。

+0

認爲同樣的太多,但「 - 」例如註冊 – pkuderov

+0

@pkuderov啊,我以爲這是兩個參賽者之間的分隔線,但如果不是,那麼是的,你是對的。 – heisenberg

+0

對於上下文來說,目前有60條記錄,而且我只會預計500個最大用例; Hex()看起來可能比它的價值更爲巫術,因爲我目前沒有任何性能問題,並且每六個月左右都有記錄倉庫。 – mfg

1

如果它實際上是十六進制數據,並且它總是具有相同的格式,以便短劃線可以在同一位置添加,那麼可以將數據存儲爲數字,並將其轉換爲十六進制符號需要的時候。

十個十六進制數字表示40位數據,所以在w3schools頁面上描述的Long類型不會這樣做,因爲它只有32位。您需要一個64位的數據類型,如doublebigint。 (後者可能在Access中不可用。)

但是,如果您實際上以數字形式對數據進行任何處理,那隻會是任何實際收益。否則,每個記錄只能保存幾個字節,並且需要進行額外的處理以轉換爲數字格式和從數字格式轉換。

如果你的表已經被填充,你將不得不讀出值,轉換它們,並將它們存儲回數字形式。

相關問題