Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
填充函数sql返回空值?_Sql_Sql Server - Fatal编程技术网

填充函数sql返回空值?

填充函数sql返回空值?,sql,sql-server,Sql,Sql Server,我在表格中有一个特定的列,它应该只包含Nvarchar中长度为3的数字。不幸的是,有些用户写了“12”,但他们应该写“012”。当时没有足够的验证 我需要解决这个问题。以下是我使用的逻辑: UPDATE [Mandats_Approvisionnement].[dbo].[ARTICLE_ECOLE] SET [UNIT_ADM] = STUFF(UNIT_ADM, 0, 0, '0') WHERE LEN(UNIT_ADM) = 2; 错误如下: 无法将值NULL插入表的“UNIT_AD

我在表格中有一个特定的列,它应该只包含Nvarchar中长度为3的数字。不幸的是,有些用户写了“12”,但他们应该写“012”。当时没有足够的验证

我需要解决这个问题。以下是我使用的逻辑:

UPDATE [Mandats_Approvisionnement].[dbo].[ARTICLE_ECOLE] 
SET [UNIT_ADM] = STUFF(UNIT_ADM, 0, 0, '0') 
WHERE LEN(UNIT_ADM) = 2;
错误如下:

无法将值NULL插入表的“UNIT_ADM”列中 “Mandats_Approvisionment.dbo.ARTICLE_ECOLE”;列不允许 空值。更新失败


我看不出问题出在哪里,我已验证,所有记录至少包含2个字符,因此STUFF函数不能返回null,因为该表列[unit_adm]中没有null记录。。。如何使其工作?

您可以使用

right('0' + UNIT_ADM, 3) 

而不是东西。

您可以使用

right('0' + UNIT_ADM, 3) 
而不是stuff。

它应该是stuffUNIT\u ADM,1,0,'0',因为如果起始位置为0,stuff返回null

引用文件:

如果起始位置或长度为负值,或者 位置大于第一个字符串的长度,则为空字符串 返回。如果起始位置为0,则返回空值

它应该是stuffUNIT_ADM,1,0,'0',因为如果起始位置为0,stuff将返回null

引用文件:

如果起始位置或长度为负值,或者 位置大于第一个字符串的长度,则为空字符串 返回。如果起始位置为0,则返回空值


你可以用正确的'0'+单位\单位ADM,3来代替这些东西,这样会更简单。我要试试immediatly@Sean兰格如果你不介意的话,把这个作为一个答案,它工作得很好。你可以用正确的'0'+单位单位ADM,3而不是其他东西来简化它。我要试试immediatly@Sean兰格,如果你不介意的话,把这个贴出来作为答案,它工作得很好,我知道,这个函数的索引从1开始,这也是一个很好的答案。我知道,这个函数的索引从1开始,这也是一个很好的答案。而且可能更好:右'00'+UNIT\u ADM,3,万一有人在那个专栏中写了7…。可能更好:右'00'+UNIT\u ADM,3如果有人在那个专栏里写了7。。。。。