2013-07-22 49 views
10

在使用大量的SQL ServerSQL Server Compact後,我最近開始使用Sqlite。我目前在Sqlite中創建表,並且注意到在定義字符串列時似乎沒有任何需要輸入字符串長度限制。在SQL Server中定義了一個255個字符的字符串數據類型,如:varchar(255)。在SQL Server Compact中定義爲:nvarchar(255)sqlite中的字符串存儲大小

但是,在Sqlite中,似乎可以將列數據類型簡單地定義爲text,而不輸入任何大小限制。有沒有辦法在sqlite中定義大小限制?或者這甚至沒有必要?

+1

您不需要指定字符串列長度,但可以(請參閱[語法](http://www.sqlite.org/syntaxdiagrams.html#type-name))。但是,與其他數據庫實現不同,固定大小的區域不是爲列分配的,而是將行構造成像對象列表一樣。所以沒有一個「罰款」,因爲有一個主要用於窄值的寬列。 –

回答

6

SQLite中存在可管理的字符串或blob限制。默認值是10^9個字節。 See documentation 順便說一句,你不需要在列聲明中指定它。

9

SQLite讓你寫VARCHAR(255)NVARCHAR(255),但唯一相關的部分是CHAR(它給出了「text affinity」列)。允許括號中的數字與標準SQL兼容,但被忽略。

SQLite中,有對字符串長度的限制小需要,因爲:(1)它不影響空間大小的字符串在磁盤上佔用和(2)沒有任何限制(除SQLITE_MAX_LENGTH)關於可以在INDEX中使用的字符串的長度。

如果您實際需要對列中的字符數進行限制,只需添加一個約束條件,如CHECK(LENGTH(TheColumn) <= 255)