Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
Естественно с числами с плавающей точкой и целымиточными типами оперирует по разному, но все это происходит после конвертации.

Это как _после_ ?
Как распарсить строку "-" на целую и дробные части ?



Глори, давайте не перепрыгивать.

мы говорили про стоку ".", и ее конвертацию во float и money
в одном случае сервер догадывается как ее преобразовать в целую и дробные части а в другом нет.


если вас так смущают неточные типы данных, давай те еще упростим задачу, возьмем два Exact Numerics типа

try_convert(money,'.'), try_convert(numeric, '.')
результат тот же
15 апр 13, 14:53    [14182005]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
мы говорили про стоку ".", и ее конвертацию во float и money
в одном случае сервер догадывается как ее преобразовать в целую и дробные части а в другом нет.

Еще раз (надеюсь последний) - это разные типы данных.
Вы почему упорно считаете, что конвертацию в любой числовой тип сервер обязан проводить одинаково.
15 апр 13, 15:27    [14182263]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
sql-server-difference-and-explanation-among-decimal-float-and-numeric
15 апр 13, 15:42    [14182379]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
isnumeric
Guest
Glory
try_convert
мы говорили про стоку ".", и ее конвертацию во float и money
в одном случае сервер догадывается как ее преобразовать в целую и дробные части а в другом нет.

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

сервер, ведь, не сам придумал себе такие правила :)

а какие Вы видите основания, у разработчиков, которые эти правила преобразования для сервера "прописали", сделать так, как оно преобразовывает сейчас ?
какой-то же логикой они руководствовались ... ?

если бы все "знаковые" типы, преобразовывали "-" в "0" - это было бы и понятно и логично,
если бы все не целые типы, преобразовывали "." в "0" - это, тоже, было бы и понятно и логично,
если бы ни для одного типа, не было бы преобразования "-" и "." в "0" - было бы вообще "предельно логично" :)

а так, как эти преобразования выполняются сейчас, как раз - не логично,
из каких соображений, для одних типов сделаны одни правила, а для других - другие ?
в этом, имхо, вопрос ...
15 апр 13, 15:50    [14182438]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
isnumeric
а какие Вы видите основания, у разработчиков, которые эти правила преобразования для сервера "прописали", сделать так, как оно преобразовывает сейчас ?
какой-то же логикой они руководствовались ... ?

- Первым может идти знак. Потому что все числа в TSQL имеют знак. Отсутствие знака означает +.
- целочисленный тип НЕ может содержать десятичный разделитель.
- дробный тип должен содержать или целую или дробную часть. отсутствие обеих частей является ошибкой.

далее уже процетированные правила конвертации про знак валюты и тп
15 апр 13, 15:58    [14182518]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
- дробный тип должен содержать или целую или дробную часть. отсутствие обеих частей является ошибкой.

и какой их типов numeric и money дробнее?
15 апр 13, 16:13    [14182663]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
и какой их типов numeric и money дробнее?

А что вы знаете, про формат money ?
Он еще и признак валюты между прочим хранит
15 апр 13, 16:15    [14182682]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
и какой их типов numeric и money дробнее?

А что вы знаете, про формат money ?
Он еще и признак валюты между прочим хранит

т.е. "." - это признак валюты?
15 апр 13, 16:16    [14182692]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
т.е. "." - это признак валюты?

Тип money воспринимает _символ_ валюты.
Какая дробность у символов по-вашему ?
15 апр 13, 16:18    [14182716]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
т.е. "." - это признак валюты?

Тип money воспринимает _символ_ валюты.
Какая дробность у символов по-вашему ?

вы написали
Glory
дробный тип должен содержать или целую или дробную часть. отсутствие обеих частей является ошибкой.

тип money - дробный тип (или с этим вы тоже будете спорить?)
try_convert(money, '.') возвращает 0
в каком месте строки '.' целая или дробная часть?
15 апр 13, 16:22    [14182754]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
тип money - дробный тип (или с этим вы тоже будете спорить?)

Да. Докажите мне, что тип money - это дробный тип данных
Как он хранится - просветите
15 апр 13, 16:26    [14182803]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
тип money - дробный тип (или с этим вы тоже будете спорить?)

Да. Докажите мне, что тип money - это дробный тип данных
Как он хранится - просветите



Глори,
и что же по вашему дробного тип данных?
15 апр 13, 16:29    [14182831]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
try_convert
Glory
пропущено...

Да. Докажите мне, что тип money - это дробный тип данных
Как он хранится - просветите



Глори,
и что же по вашему дробный тип данных?
15 апр 13, 16:31    [14182848]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
и что же по вашему дробного тип данных?

Например, float. Потому что он хранится согласно стандарту IEEE. И оперируется согласно этому стандарту.
15 апр 13, 16:32    [14182859]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
и что же по вашему дробного тип данных?

Например, float. Потому что он хранится согласно стандарту IEEE. И оперируется согласно этому стандарту.

отлично, еще "дробные типы", по вашей классификации в tsql есть?
15 апр 13, 16:34    [14182882]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
qwrqwr
Member

Откуда: Msk
Сообщений: 1684
Я для себя уже понял - надо запомнить, т.к. логика не везде просматривается.
Вот, набросал шпаргалку:
select n, char(n)c
, isnumeric(char(n))          [isnumeric]
, try_convert(bit,char(n))    [bit]
, try_convert(tinyint,char(n))[tinyint]
, try_convert(int,char(n))    [int]
, try_convert(bigint,char(n)) [bigint]
, try_convert(numeric,char(n))[numeric]
, try_convert(float,char(n))  [float]
, try_convert(real,char(n))   [real]
, try_convert(money,char(n))  [money]
from (values(32),(36),(43),(44),(45),(46),(92),(136),(160),(164))N(n)


Местами забавно смотрится:
n           c    isnumeric   bit   tinyint int         bigint               numeric     float                  real          money
----------- ---- ----------- ----- ------- ----------- -------------------- ----------- ---------------------- ------------- ---------------------
32               0           0     0       0           0                    NULL        0                      0             0,00
36          $    1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00
43          +    1           NULL  0       0           0                    NULL        NULL                   NULL          0,00
44          ,    1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00
45          -    1           NULL  0       0           0                    NULL        NULL                   NULL          0,00
46          .    1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00
92          \    1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00
136         €    1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00
160              1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00
164         ¤    1           NULL  NULL    NULL        NULL                 NULL        NULL                   NULL          0,00

+ select @@version
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (Intel X86)
Oct 19 2012 13:43:21
Copyright (c) Microsoft Corporation
Express Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
15 апр 13, 16:35    [14182891]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
отлично, еще "дробные типы", по вашей классификации в tsql есть?

Я уже все сказал.
Если настаиваете, что тип money это тоже самое, что numeric или float, то докажите это.
15 апр 13, 16:36    [14182896]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
отлично, еще "дробные типы", по вашей классификации в tsql есть?

Я уже все сказал.

пока все мимо кассы
Glory
Если настаиваете, что тип money это тоже самое, что numeric или float, то докажите это.

Какая прелесть :)


ну начнем с того что понятие "дробные типы" в tsql нет.
зато есть понятия Exact Numerics и в этот "класс" входит как numeric так и money

Глори, вы уже просто смешны, не позорьтесь дальше.
15 апр 13, 16:46    [14183000]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
пока все мимо кассы

А вы кассир ? Свободная касса ?

try_convert
ну начнем с того что понятие "дробные типы" в tsql нет.

Я и не говорил, что такое понятие есть в tsql
Я объединил в этих словах все типы, про которые я точно знаю, что и как они хранят
И по каким стандартам

try_convert
зато есть понятия Exact Numerics и в этот "класс" входит как numeric так и money


Цитата, сестра, цитата
Что то у меня в хелпе на exact numeric data выходит статья int, bigint, smallint, and tinyint (Transact-SQL)
Что я делаю не так ?

try_convert
Глори, вы уже просто смешны, не позорьтесь дальше.

Доказательство то эквивалентности float и money будет ?
Или бла-бла-бла взамен ?
15 апр 13, 16:54    [14183058]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
зато есть понятия Exact Numerics и в этот "класс" входит как numeric так и money


Цитата, сестра, цитата
Что то у меня в хелпе на exact numeric data выходит статья int, bigint, smallint, and tinyint (Transact-SQL)
Что я делаю не так ?

вот уж не думал что придется вам, тыкать в BOL-ом


http://msdn.microsoft.com/ru-ru/library/ms187752.aspx

Exact Numerics
bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money
15 апр 13, 16:58    [14183094]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
вот уж не думал что придется вам, тыкать в BOL-ом

И дальше что ? Продолжайте
15 апр 13, 16:59    [14183103]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
вот уж не думал что придется вам, тыкать в BOL-ом

И дальше что ? Продолжайте

вы просили же цытатку, на те вам

а те теперь вы мне, где описано как должна конвертиться "." в разные числовые типы данных.
15 апр 13, 17:02    [14183125]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
вы просили же цытатку, на те вам

и что дает группировка в некой группе с именем Exact Numerics ?
Эта группа объединяет типы данных по каким признакам ? Методам ? Свойствам ?

try_convert
а те теперь вы мне, где описано как должна конвертиться "." в разные числовые типы данных.

Перечитайте цитаты из хелпа.
Статья Data Type Conversion (Database Engine)
15 апр 13, 17:08    [14183168]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
try_convert
Guest
Glory
try_convert
вы просили же цытатку, на те вам

и что дает группировка в некой группе с именем Exact Numerics ?
Эта группа объединяет типы данных по каким признакам ? Методам ? Свойствам ?

на эту группу ссылается BOL, в том числе в приведенных вами цитатах, когда описывает правила конвертации.



Glory
try_convert
а те теперь вы мне, где описано как должна конвертиться "." в разные числовые типы данных.

Перечитайте цитаты из хелпа.
Статья Data Type Conversion (Database Engine)

читал, объяснения такого поведения не нашел, можете более точно указать место или привести цитату, а то все ранее приведенные вами цитаты как-то обходили стороной текущее поведение.
15 апр 13, 17:21    [14183256]     Ответить | Цитировать Сообщить модератору
 Re: try_convert, точка и дефис.  [new]
Glory
Member

Откуда:
Сообщений: 104760
try_convert
на эту группу ссылается BOL

на группу ???

try_convert
читал, объяснения такого поведения не нашел, можете более точно указать место или привести цитату, а то все ранее приведенные вами цитаты как-то обходили стороной текущее поведение.


Character expressions that are being converted to an exact numeric data type must consist of digits, a decimal point, and an optional plus (+) or minus (-). Leading blanks are ignored. Comma separators, such as the thousands separator in 123,456.00, are not allowed in the string.

Character expressions being converted to money or smallmoney data types can also include an optional decimal point and dollar sign ($). Comma separators, as in $123,456.00, are allowed.

Почему для money or smallmoneyь прописаны отдельные правила ?
Потому что они входят в некую группу, которой даже не дано определения ?
15 апр 13, 17:27    [14183293]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить