iT邦幫忙

0

SSMS無法插入 NULL 值到資料行,資料行不得有 Null。INSERT 失敗。

SKY 2022-06-30 09:49:032422 瀏覽
  • 分享至 

  • xImage

以下是我在SSMS上面打的查詢
但我想不通 nostr為什麼會被判定為null
如果把insert 拿掉直接print會是正常的

DECLARE @count INT;
DECLARE @nostr nvarchar(5);

SET @count = 357;

WHILE @count < 365
BEGIN

     select RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5) as nostr   -- [num 361] to [str 00361]               

     INSERT [dbo].[TxtLink] ([TlinkBlock], [TlinkMsg], [TlinkSort], [TlinkDate]) VALUES (N'901T00004', @nostr, 1, CAST(N'2022-06-29T13:20:57.440' AS DateTime))

     --print @nostr;       

     SET @count = @count + 1;       
END;
看更多先前的討論...收起先前的討論...
select RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5) as nostr

換成

SET @nostr = RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5);
select RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5) as nostr

換成

SET @nostr = RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5);
SKY iT邦新手 5 級 ‧ 2022-06-30 09:58:40 檢舉
真的可以耶,原來as 並非真正賦值啊?
SKY iT邦新手 5 級 ‧ 2022-06-30 09:58:41 檢舉
真的可以耶,原來as 並非真正賦值啊?
SKY iT邦新手 5 級 ‧ 2022-06-30 09:58:42 檢舉
真的可以耶,原來as 並非真正賦值啊?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
小山丘
iT邦新手 2 級 ‧ 2022-06-30 10:00:48

兩個方法

一個是
SET @nostr = RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5);

第二個
select @nostr=RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5)

0
allenlwh
iT邦高手 1 級 ‧ 2022-06-30 10:55:14

您宣告了

DECLARE @nostr nvarchar(5)

將字串補0,卻是給了nostr

select RIGHT(REPLICATE('0', 5) + CAST(@count as nvarchar), 5) as nostr

insert時,使用@nostr

insert TxtLink([TlinkMsg]) values (@nostr)

我要發表回答

立即登入回答