Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Trunc 
:(
    Опции темы
MakNik
Дата 15.5.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 5.4.2006

Репутация: нет
Всего: 0



Есть ли в MSSQL ф-ция отбрасывания дробной части ? 
PM   Вверх
ALKS
Дата 15.5.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



ROUND
Returns a numeric expression, rounded to the specified length or precision.

Syntax
ROUND ( numeric_expression , length [ , function ] ) 

...

numeric_expression is rounded on the left side of the decimal point, as specified by length.

function

Is the type of operation to perform. function must be tinyint, smallint, or int. When function is omitted or has a value of 0 (default), numeric_expression is rounded. When a value other than 0 is specified, numeric_expression is truncated.

RTFM! лентяи...
 
PM   Вверх
MakNik
Дата 15.5.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 5.4.2006

Репутация: нет
Всего: 0



... будет ли корректно работать такой вариант: Convert(int, @F)? 
PM   Вверх
ALKS
Дата 15.5.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



нет. насколько я помню, все подобные преобразования как рза таки округляют, а не отбрасывают. это вам не Cи. 
PM   Вверх
boevik
Дата 15.5.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Есть, floor. 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
MakNik
Дата 15.5.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 5.4.2006

Репутация: нет
Всего: 0



Цитата(boevik @ 15.5.2006,  13:40)
Есть, floor.

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

Declare @F Float Set @F=-13.9 /7
Select Convert(int,@F),@F, FLOOR(@F)
 
PM   Вверх
ALKS
Дата 15.5.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



MakNik, ну пойди в BOL и почитай описание к CONVERT. зачем гадать? может ты и прав.
Там собственно вот что написано:

"When converting character or binary expressions (char, nchar, nvarchar, varchar, binary, or varbinary) to an expression of a different data type, data can be truncated, only partially displayed, or an error is returned because the result is too short to display."

т.е. да я не прав в своем утверждении что он округляет. он именно обрезает, если может. а если не может... smile 

кстати там же сказано, что конфертация из float в int, это Implicit conversion. Т.е. тебе не нужно вообще вызывать CONVERT smile
 
Код

Declare @F float 
Set @F=-13.9 /7
Select Convert(int,@F),@F, FLOOR(@F)

Declare  @I int, @Z int
Set @I=-13.9 /7
Set @Z=@F
Select @I, @Z
 

Это сообщение отредактировал(а) ALKS - 15.5.2006, 15:16
PM   Вверх
boevik
Дата 15.5.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Цитата(MakNik @  15.5.2006,  14:59 Найти цитируемый пост)
Floor не подходит при отрицательных значениях...
опыты показывают, что  Convert как раз делат то что нужно, только вот не знаю или это не задокументированная особенность или глюк, который в следующих версиях устранят...

Раз floor не подходит, то пробуй ceiling
Код

Declare @F Float Set @F=-13.9 /7
Select Convert(int,@F),@F, FLOOR(@F), ceiling(@F)
 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.