SQL Server Char數據類型

在本教學中,將學習如何使用SQL Server CHAR數據類型在資料庫中存儲固定長度的非Unicode字串。

CHAR數據類型簡介

在SQL Server中,如果要存儲固定長度的非Unicode字串數據,請使用CHAR數據類型:

CHAR(n)

在此語法中,n指定字串長度,範圍從18000
因為n是可選的,如果不在數據定義或變數聲明語句中指定它,則其默認值為1
僅當在列中值的大小固定時,才應使用CHAR數據類型。
將字串值插入CHAR列時。 如果字串值的長度小於列中指定的長度,SQL Server將向字串值添加尾隨空格到列中聲明的長度。 但是,當查詢選擇此字串值時,SQL Server會在返回之前刪除尾隨空格。

另一方面,如果插入長度超過列長度的值,SQL Server將發出錯誤消息。

請注意,CHAR的ISO同義詞是CHARACTER,可以互換使用它們。

CHAR數據類型示例

以下語句創建一個包含CHAR列的新表:

CREATE TABLE test.sql_server_char (
    val CHAR(3)
);

請注意,如果資料庫中沒有test模式,則可以在創建sql_server_char表之前使用以下語句創建它:

CREATE SCHEMA test;
GO

要將固定長度的字串插入CHAR列,請使用INSERT語句,如下所示:

INSERT INTO test.sql_server_char (val)
VALUES
    ('ABC');

上面語句按預期那樣工作。以下語句嘗試插入長度超過列長度的新字串:

INSERT INTO test.sql_server_char (val)
VALUES ('XYZ1');

SQL Server發出以下錯誤:

String or binary data would be truncated.
The statement has been terminated.

以下語句將單個字元插入test.sql_server_char表的val列:

INSERT INTO test.sql_server_char (val)
VALUES
    ('A');

在SQL Server中,LEN函數返回指定列中排除尾隨空白的字元數,DATALENGTH函數返回位元組數。

請參閱以下語句:

SELECT
    val,
    LEN(val) len,
    DATALENGTH(val) data_length
FROM
    sql_server_char;

執行上面查詢,得到以下結果:

即使字元“A”只是一個字元,列的位元組數也是固定的,即:3

在本教學中,學習了如何使用SQL Server CHAR數據類型在資料庫中存儲固定長度的非Unicode字串。


上一篇: SQL Server數據類型 下一篇: SQL Server數據定義