Как запретить Invoke-SQLCMD обрезать начальные нули

В powershell у меня есть скрипт, и каждый раз, когда он запускается, ему нужно увеличивать число в БД на единицу. Как только он достигает 9999, он сбрасывается обратно на 0001. У меня есть эта функция, разработанная в powershell, моя проблема заключается в том, что Invoke-SQLCMD продолжает удалять все ведущие 0

поэтому, если я хочу обновить значение БД до 0001, оно обновляет его только до 1

Есть ли способ, чтобы SQLCMD продолжал вести 0?

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

person Cleadus Fetus    schedule 17.08.2018    source источник
comment
Пожалуйста, отредактируйте вопрос и добавьте, как выполняется приращение. Может быть проблема с преобразованием целых чисел/строк, но это всего лишь предположение.   -  person vonPryz    schedule 17.08.2018
comment
Предположительно, он хранится в БД как целое число, где стандартной практикой является игнорирование ведущих нулей (потому что их будет много). Если вы хотите, чтобы он имел начальные нули для отображения позже, вы можете отформатировать его самостоятельно, когда будете читать его обратно. Например: "{0:0000}" -f 1, что дает вывод: 0001   -  person boxdog    schedule 17.08.2018
comment
Invoke-SqlCmd совершенно невиновен. Если $newFileNum содержит правильную строку (0001), вам нужно передать ее как строку (sequence_no = '$newFileNum'). В противном случае вы отправите sequence_no = 0001 на SQL Server, где SQL Server просто проанализирует 0001 обратно в INT. Или вы можете вообще избежать замены как Invoke-Sqlcmd, так и строки и использовать правильные параметры.   -  person Jeroen Mostert    schedule 17.08.2018


Ответы (1)


вызов SQLCMD делает это по умолчанию. Один из способов - когда вы запускаете свой запрос к SQL, чтобы получить там значение, вы можете использовать .ToString("0000"), чтобы вернуть 0, или вы можете использовать это как свой SQL-запрос.

person Cleadus Fetus    schedule 17.08.2018