Тип float
удаляет завершающие нули, по крайней мере, для SQL Server. Попробуйте разыграть decimal
и float
.
SELECT CAST(12.350000 as float)
Возвращает
12,35
blockquote>
Чтобы проверить наличие параметра командной строки, используйте пустые скобки:
IF [%1]==[] echo Value Missing
или
IF [%1] EQU [] echo Value Missing
The Страница SS64 на IF поможет вам здесь. В разделе «Существует ли% 1?».
Вы не можете установить позиционный параметр, поэтому вы должны сделать что-то вроде
SET MYVAR=%1
. Затем вы можете переустановить MYVAR на основе его содержимого.
Оба ответа верны, но я делаю свои немного разные. Возможно, вы захотите рассмотреть пару вещей ...
Запустите пакет с помощью:
SetLocal
и завершите его с
EndLocal
. Это позволит сохранить все ваши «SET» действительными только во время текущего сеанса и не покинет его. переменные, оставленные вокруг именованных как «FileName1» или любые другие переменные, которые вы установили во время выполнения, могут помешать следующему запуску пакетного файла. Таким образом, вы можете сделать что-то вроде:
IF "%1"=="" SET FileName1=c:\file1.txt
Другой трюк, если вы предоставляете только 1 или 2 параметра, используйте команду SHIFT, чтобы переместить их, поэтому искомый параметр ВСЕГДА равен% 1 ...
Например, обработайте первый параметр, сдвиньте их, а затем сделайте это снова. , вы не программируете% 1,% 2,% 3 и т. д.
rem set defaults:
set filename1="c:\file1.txt"
set filename2="c:\file2.txt"
set filename3="c:\file3.txt"
rem set parameters:
IF NOT "a%1"=="a" (set filename1="%1")
IF NOT "a%2"=="a" (set filename2="%2")
IF NOT "a%3"=="a" (set filename1="%3")
echo %filename1%, %filename2%, %filename3%
Будьте осторожны с кавычками, хотя они могут и не понадобиться в ваших переменных.