Powershell 如何防止调用SQLCMD修剪前导零';s
在powershell中,我有一个脚本,每次运行它都需要将数据库中的一个数字增加1。一旦达到9999,它将重置回0001。 我在powershell中实现了这个功能,我的问题是调用SQLCMD 不断删除任何前导0 因此,如果我想将DB值更新为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
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和字符串替换,并使用。