[SQL]什麼時候指定字串超過限制時,不會發生錯誤呢?

當我們新增資料到Table之中,如果字串長度超過時,就會發生「String or binary data would be truncated.」的錯誤,
那什麼時候指定字串超過限制時,不會發生錯誤呢?

以下是亂馬客觀看「Under what circumstances is character data truncated without triggering an error?」的記錄。

當我們新增資料到Table之中,如果字串長度超過時,就會發生「String or binary data would be truncated.」的錯誤,如下,

IF OBJECT_ID('Table_1', 'U') IS NOT NULL
DROP TABLE Table_1;
GO

CREATE TABLE Table_1
(
  Id INT NOT NULL IDENTITY PRIMARY KEY,
  Name VARCHAR(10) NOT NULL
);
GO

INSERT INTO Table_1(Name) VALUES('1234567890_123');

Msg 8152, Level 16, State 14, Line 17
String or binary data would be truncated.

The statement has been terminated.

 

那如果把字串 Assign 到變數之中,還是會發生錯誤嗎? 如下,

DECLARE @Name VARCHAR(10)
SET @Name = '1234567890_123';
SELECT @Name;

image

把字串Assign到變數之中,如果給的字串超過變數宣告的長度,那就超過的就會被截掉而不會發生錯誤哦!

 

參考資料

Questions about SQL Server Data Types You were Too Shy to Ask

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^