我正在更換一些GUID列類型,因爲我需要在MSSQL 2008中做一些Group By
工作。我正在將類型更改爲Char(36),因爲我知道值的確切大小,但在Google搜索後有點I看到很多人在做Varchar(36)。在這種情況下做CHAR不是更好嗎?VarChar(36)或Char(36)的SQL Server GUID?
1
A
回答
3
CHAR和VARCHAR的區別在於空間是如何分配的。 CHAR字段始終是定義的大小,但直到VARCHAR字段實際上包含數據,它纔會佔用0個字節。
就你而言,因爲你總是要存儲36個字符,所以我建議你繼續使用CHAR。如果您正在存儲不同長度的數據,請使用VARCHAR。
但是,你真的想在GUID上使用GROUP BY嗎?他們被稱爲「全球唯一標識符」是有原因的。或者是將它們分開,然後按照GUID的某些部分進行分組(總體來說可能是相同的,但總的來說,沒有一個是相同的)。
+0
如果總結出與guid有關的多條記錄,則通過on guid進行分組是有意義的。 – Chalky 2014-05-12 04:27:38
0
快速回答:使用CHAR(36)或更好的BINARY(16)。
長的答案:你可能會更好的離開列類型,並在您的查詢中使用CAST。
DECLARE @a TABLE (x UNIQUEIDENTIFIER, y INT)
-- Insert some data here
SELECT
MIN(y),
CAST(a.x AS BINARY(16))
FROM
@a AS a
GROUP BY
CAST(a.x AS BINARY(16))
相關問題
- 1. Django UUIDField從varchar(36)截斷爲char(32)
- 2. 本主義,以創建類型=「GUID」爲VARCHAR(255),而不是CHAR(36)
- 3. SQL-EX.ru練習#36
- 4. MySQL中的主鍵:INT(n)或UUID as varchar(36)
- 5. tour.golang.org#36由pic.Show
- 6. custom_require.rb:36:在`gem_original_require」
- 7. Exceptional C++ Item 36
- 8. SQL Server連續發票不包括36個月後的差距
- 9. Javascript:toString(36)for large integers
- 10. 以36個字母的格式顯示GUID
- 11. 如何在SQLITE中生成唯一的GUID 36字符iPhone
- 12. SQL Server CE讀取速度慢(1000行是36秒?)
- 13. ValueError:形狀(6,108)和(36,)未對齊:108(dim 1)!= 36(dim 0)
- 14. 的JavaScript的toString(36),在PHP
- 15. Firefox中的IndexedDB錯誤36
- 16. toString(36)的對面嗎?
- 17. 什麼是SQL Server中的char/varchar?
- 18. GUID:VARCHAR(36)與唯一標識符
- 19. char或varchar
- 20. 拋出:InvalidParameterException:INSTANCEID超過36
- 21. 如何獲得libicui18n.so.36 DEB?
- 22. 如何獲取libicui18n.so.36?
- 23. FreeType錯誤:FT_Load_Char返回36
- 24. SQL Server 2008 varchar和char不工作
- 25. 如何獲取sql server中char或varchar字段的長度?
- 26. 如何創建GUID列?我試過的字符串:長度=> 36,但創建varchar(255)
- 27. needle/definition-context.rb:36:warning:undefining`initialize'may cause serious problems
- 28. SQL Server和GUID?
- 29. angular.min.js:36未捕獲的錯誤
- 30. 摘要的基數-36表示
只是感興趣。爲什麼你需要在組中使用'varchar/char'而不是'uniqueidentifier'? – 2011-04-17 04:47:11
對非常大的URL數據集合進行聚合並且URL由GUID別名,需要進行一些分組並且不能用Uniqueidentifier AFAIK完成。 – Snowy 2011-04-21 00:07:55
我所做的簡單測試顯示沒有問題。我發現http://www.sqlservercentral.com/articles/Data+Types/uniqueidentifierusageandlimitations/1406/。一篇相當古老的文章可能就是SQL Server 2000中的情況。我已經在SQL Server 2005和2008中進行過測試。 – 2011-04-21 10:57:59