我的問題:在SQL中;我只使用SQL,所以我只是在問它,數據長度是什麼意思?在SQL中什麼是字符數限制
如果數據類型爲nvarchar的列設置爲長度50(它是我在WebMatrix中創建的每個新列的默認值),那麼這是否意味着第51個字符會導致錯誤?
我的問題:在SQL中;我只使用SQL,所以我只是在問它,數據長度是什麼意思?在SQL中什麼是字符數限制
如果數據類型爲nvarchar的列設置爲長度50(它是我在WebMatrix中創建的每個新列的默認值),那麼這是否意味着第51個字符會導致錯誤?
字符串存儲在SQL數據庫中通常使用一個固定長度格式(char()
或nchar()
)或可變長度格式(varchar()
或nvarchar()
)。
char()
和varchar()
使用一個字節來存儲每個字符。 「n」前綴允許存儲unicode字符(2字節寬)。在所有情況下,字段的最大長度都在括號之間。 這是以字符爲單位而不是以字節測量的。所以,varchar(2)
和nvarchar(2)
都可以存儲最多兩個字符。後者佔據了原來的兩倍多的空間(用於字符存儲,不包括長度)。
這是該字段的最大長度,所以任何長度都可以存儲。如果嘗試存儲其他字符,則行爲可能取決於數據庫和操作。您可能會得到截斷的值。或者你可能會得到一個錯誤。
與一切其他一樣,空格會被視爲字符。
如果您自己編寫SQL,那麼不使用默認長度。始終以明確的長度使用這些結構,否則您可能會意外並且難以在代碼中發現錯誤。
通常,特定數據庫的文檔在解釋這些概念方面做得很好。我建議你從那裏開始解釋。
由於字段的大小是字節,當然nvarchar只能存儲一半的字符數?所以在你的例子中,nvarchar(2)只能存儲一個字符。 –
@AdrianWragg。 。對於'nvarchar()',長度以字符爲單位。例如,您可以檢查http://technet.microsoft.com/en-us/library/ms186939.aspx和http://dev.mysql.com/doc/refman/5.5/en/string-type- overview.html。評論中的這些錯誤信息就是爲什麼我寫了這個答案。 –
夠公平的。我會刪除我的評論;我不記得。 –
這意味着如果您嘗試將51個字符放入該字段中,則不會超過。順便說一下,sql是結構化查詢語言的縮寫,並不標識任何數據庫軟件。 –
字符,你的意思是字母? '(空間)也算在內嗎? –
是的,它的確如此。僅供參考,我**高度**建議您編輯此問題以改進它。否則,在堆棧溢出問題上可能會遇到困難。 – ThiefMaster