Почему SQL Server округляет результаты деления двух целых чисел?

Вы должны по крайней мере избежать одиночной кавычки. Насколько я знаю, "\" обратная косая черта не нуждается в экранировании.

Проблема заключается в одинарных кавычках, crate.io использует их для явного обозначения значения столбца, как упомянуто здесь

SELECT "field" FROM "doc"."test" where field = '''dhruv\' limit 100;

Выше будет возвращен результат (пример того, что я запускаю на моей локальной машине).

Таким образом, ваш запрос должен выглядеть следующим образом (обратите внимание на правильное завершение одной кавычкой):

String query = "select * from test where col1='''dhruv\'";

ОБНОВЛЕНИЕ:

Тогда я бы предложил, если вам придется сделать это таким образом, экранировать только переменную "escapedValue" и добавить ее

String query = "select * from test where col1=" + "'" + escapedValue + "'";

22
задан gbn 8 April 2009 в 06:26
поделиться

5 ответов

Когда Вы делаете целочисленное деление (целое число, разделенное на целое число), Вы всегда получаете целочисленный ответ. 50/100 =.50, который является 0 в целом числе - говорят.

Вы попытались делить MY_COLUMN на 100,0?

32
ответ дан 29 November 2019 в 03:53
поделиться

Бросьте целые числа.

SELECT (cast(50 AS float)/100)
24
ответ дан 29 November 2019 в 03:53
поделиться

Вы делаете целочисленное деление. 50/100 0 с остатком от 50.

Необходимо использовать деление с плавающей точкой.

1
ответ дан 29 November 2019 в 03:53
поделиться

Вы делите 2 целых числа, который приводит к другому целому числу.

Это должно возможный бросить тот путь, также

ВЫБЕРИТЕ (50/100):: числовой;

0
ответ дан 29 November 2019 в 03:53
поделиться

NB - Будьте осторожны: остаток от целочисленного деления не округляется. Скорее его отбрасывают. Это эквивалентно вызову функции FLOOR sql.

Это обычное явление, и определяется как таковое, потому что при умножении двух целых чисел дробь никогда не встречается. Поэтому при умножении целых чисел никогда не используется методология обработки дробей, но этого нельзя сказать о целочисленном делении.

Это часто может сказаться при выполнении арифметики dateTime в SQL.

1
ответ дан 29 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: