Цитирование десятичных значений - PullRequest
1 голос
/ 01 апреля 2010

Я сохраняю промежуточную сумму в десятичном (10,2) поле и добавляю ее по мере обработки элементов.

обновить foo set bar = bar + '3.15'

Примерно в 20% случаев выдается предупреждение "Данные усечены для столбца 'bar' в строке 4"

Это предупреждение никогда не выдается, если значение обновления не заключено в кавычки. Следует ли указывать десятичные значения?

Ответы [ 5 ]

4 голосов
/ 01 апреля 2010

Конечно, нет.

Целые числа и числа с плавающей запятой не являются строками и никогда не должны заключаться в кавычки. Только MySQL даже допускает кавычки вокруг них.

2 голосов
/ 01 апреля 2010

Возможно ли, что добавляемое вами значение превышает пределы Decimal(10,2)?

например.

update foo set bar = bar + '3.149999'

вызовет предупреждение «Усеченные данные», так как поле может хранить только 2 цифры справа от десятичной точки (не 6).

1 голос
/ 01 апреля 2010

Нет, десятичные значения указаны как есть. Если вы цитируете их, это будет интерпретироваться как varchar.

0 голосов
/ 01 апреля 2010

Если вы не заключите в кавычки значения NUMERIC / DECIMAL, они, вероятно, сначала будут преобразованы в FLOAT (с потерей точности), а затем в нужный вам тип. Вы также можете использовать ключевое слово CAST (MySQL) или :: cast (Postgres).

0 голосов
/ 01 апреля 2010

Нет! Кавычки используются только для строк, таких как текст, символ, varchar и т. Д.

...