VARCHAR
和 NVARCHAR
資料型別SQL Server 使用兩種關鍵字串資料類型:VARCHAR
和 NVARCHAR
。 了解它們的局限性對於有效的資料庫設計和防止截斷導致資料遺失至關重要。
NVARCHAR
和 VARCHAR
大小限制:
NVARCHAR
: 儲存 Unicode 字元。 預設最大長度為 4000 個字元 (NVARCHAR(4000)
)。 但是,使用 NVARCHAR(MAX)
最多可以儲存 2GB 的 Unicode 資料。
VARCHAR
: 儲存單字元。預設最大長度為 8000 個字元 (VARCHAR(8000)
)。 同樣,VARCHAR(MAX)
支援最大 2GB 的單字節資料。
字串連接的結果在很大程度上取決於輸入資料類型:
VARCHAR(n) VARCHAR(n)
:產生 VARCHAR(8000)
,上限為 8000 個字元。 NVARCHAR(n) NVARCHAR(n)
:產生 NVARCHAR(4000)
,上限為 4000 個字元。 VARCHAR(n) NVARCHAR(n)
:由於 NVARCHAR(4000)
的優先權較高,因此預設為 NVARCHAR
。 重要的是,使用 NVARCHAR(MAX)
或 VARCHAR(MAX)
可以避免連接期間的截斷,前提是組合長度保持在 2GB 限制以下。
N
為前綴的文字(例如 N'My String'
)被視為 NVARCHAR(n)
(最多 4000 個字元)或 NVARCHAR(MAX)
(如果超過 4000 個字元)。 N
前綴的文字(例如 'My String'
)被視為 VARCHAR(n)
(最多 8000 個字元)或 VARCHAR(MAX)
(如果超過 8000 個字元)。 使用CONCAT
功能:
建議將 CONCAT
函數用於大型字串連接,因為它將所有輸入視為 MAX
資料類型,防止截斷。
避免使用 =
運算子:
追加字串時,請避免將 =
運算子與非 MAX
資料型別變數一起使用,因為這可能會導致截斷。 相反,直接將連接結果分配給變數。
要在 SQL Server Management Studio 中查看沒有截斷的冗長動態 SQL 查詢:
@SQL
替換為動態 SQL 變數:<code class="language-sql">SELECT @SQL as [processing-instruction(x)] FOR XML PATH</code>
這種基於 XML 的方法允許查看幾乎無限長度的字串。
以上是SQL Server 中 VARCHAR 和 NVARCHAR 的限制和行為是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!