Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Powershell 如何防止调用SQLCMD修剪前导零';s_Powershell_Leading Zero_Invoke Sqlcmd - Fatal编程技术网

Powershell 如何防止调用SQLCMD修剪前导零';s

Powershell 如何防止调用SQLCMD修剪前导零';s,powershell,leading-zero,invoke-sqlcmd,Powershell,Leading Zero,Invoke Sqlcmd,在powershell中,我有一个脚本,每次运行它都需要将数据库中的一个数字增加1。一旦达到9999,它将重置回0001。 我在powershell中实现了这个功能,我的问题是调用SQLCMD 不断删除任何前导0 因此,如果我想将DB值更新为0001,它只会将其更新为1 有没有办法让SQLCMD保持领先0 Invoke-Sqlcmd -ServerInstance $dataSource -Database $database -Username $user -password $pass -Q

在powershell中,我有一个脚本,每次运行它都需要将数据库中的一个数字增加1。一旦达到9999,它将重置回0001。 我在powershell中实现了这个功能,我的问题是调用SQLCMD 不断删除任何前导0

因此,如果我想将DB值更新为
0001
,它只会将其更新为
1

有没有办法让SQLCMD保持领先0

Invoke-Sqlcmd -ServerInstance $dataSource -Database $database -Username $user -password $pass -Query "UPDATE DBO.TABLE_NAME SET sequence_no = $newFileNum"

默认情况下,invoke-SQLCMD会执行此操作。
一种方法是,当您对SQL运行查询以获取其中的值时,您可以使用
.ToString(“0000”)
将0放回,或者您可以将其用作SQL查询。

请编辑问题并添加增量是如何完成的。可能是一个整数/字符串转换问题,但这只是一个猜测。据推测,它作为整数存储在数据库中,忽略前导零是标准做法(因为前导零太多)。如果希望它有前导零以便以后显示,可以在读回时自己格式化它。例如:
“{0:0000}”-f1
,它给出的输出:
0001
调用SqlCmd
是完全无辜的。如果
$newFileNum
包含正确的字符串(
0001
),则需要将其作为字符串传递(
序列号='$newFileNum'
)。否则,您将把
sequence\u no=0001
发送到SQL Server,SQL Server只需将
0001
解析回
INT
。或者您可以同时避免调用Sqlcmd和字符串替换,并使用。