Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема обратной конвертации после функции format  [new]
cakp
Member

Откуда:
Сообщений: 14
declare @i int = 300000
select convert(float,replace(replace(format(@i,'N','ru-ru'),',','.'),' ',''))


Не знаю как привести отформатированный код, в int или хотябы float. Что только не пробовал.
Replace игнорируется.

Сообщение было отредактировано: 18 июл 17, 12:30
18 июл 17, 12:23    [20653369]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36979
А зачем, простите, int переводить в int таким мудреным способом? Зачем вообще int в int переводить хоть каким способом?
18 июл 17, 12:25    [20653379]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
cakp
Member

Откуда:
Сообщений: 14
Проблема такая, на вход поступает int. Далее мы отформатируем значение (формат указан выше) и сохраняем в XML потом, XML транслируем через XSLT в html. И отображаем контракт. После ознакомления контракта, мы из XML вытаскиваем уже отформатировнное значение, но в таблице нужно его хранить в int
18 июл 17, 12:27    [20653396]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
o-o
Guest
Гавриленко Сергей Алексеевич
А зачем, простите, int переводить в int таким мудреным способом? Зачем вообще int в int переводить хоть каким способом?

вариант на тему "когда коту делать нечего"
******************************************************
автор
После ознакомления контракта

-- контракт, ты ознакомился?
-- еще нет
-- ну пойди, ознакомься
18 июл 17, 12:30    [20653415]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7765
cakp,

посмотрите в bimary формате - какой там код на самом деле. Там не 0x20, как Вы написали.
18 июл 17, 12:31    [20653418]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36979
select convert(float,replace(replace(format(@i,'N','ru-ru'),N',',N'.'),nchar(160),N''))
18 июл 17, 12:35    [20653443]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
cakp
Member

Откуда:
Сообщений: 14
Спасибо, помогло, хотелось бы комментарий, почему надо указывать N и почему пробел через nchar(160) ?
18 июл 17, 12:42    [20653474]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36979
cakp
Спасибо, помогло, хотелось бы комментарий, почему надо указывать N и почему пробел через nchar(160) ?
Наверное, потому что это не пробел.
18 июл 17, 12:44    [20653489]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7765
cakp,

Двое из ларца...
- Вы и гуглить за меня будете?
- Ага!

Это NBSP.
18 июл 17, 12:50    [20653519]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
cakp
Member

Откуда:
Сообщений: 14
автор
Наверное, потому что это не пробел.

это я понял, а в какой таблице посмотреть соответствие кода и данного псевдопробела ? в ASCII я чего то его не вижу.
18 июл 17, 13:11    [20653663]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
cakp
Member

Откуда:
Сообщений: 14
нашел
18 июл 17, 13:13    [20653677]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
rnk
Member

Откуда:
Сообщений: 126
cakp
Проблема такая, на вход поступает int. Далее мы отформатируем значение (формат указан выше) и сохраняем в XML потом, XML транслируем через XSLT в html. И отображаем контракт. После ознакомления контракта, мы из XML вытаскиваем уже отформатировнное значение, но в таблице нужно его хранить в int

Я бы форматировал число в ходе XSLT-преобразования, а в XML писал бы int без форматирования.
18 июл 17, 13:50    [20653907]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
rnk
Member

Откуда:
Сообщений: 126
rnk
Я бы форматировал число в ходе XSLT-преобразования, а в XML писал бы int без форматирования.

https://www.w3schools.com/XML/func_formatnumber.asp
https://msdn.microsoft.com/ru-ru/library/ms256229.aspx
18 июл 17, 13:53    [20653917]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
aleks2
Guest
rnk
cakp
Проблема такая, на вход поступает int. Далее мы отформатируем значение (формат указан выше) и сохраняем в XML потом, XML транслируем через XSLT в html. И отображаем контракт. После ознакомления контракта, мы из XML вытаскиваем уже отформатировнное значение, но в таблице нужно его хранить в int

Я бы форматировал число в ходе XSLT-преобразования, а в XML писал бы int без форматирования.


А я бы еще раз спросил: нафига "форматировать" целое число в XML?
Тредстартер настолько глуп, что не понимает: после "форматирования" - это не число, но строка.
18 июл 17, 16:23    [20654784]     Ответить | Цитировать Сообщить модератору
 Re: Проблема обратной конвертации после функции format  [new]
rnk
Member

Откуда:
Сообщений: 126
aleks2
rnk
Я бы форматировал число в ходе XSLT-преобразования, а в XML писал бы int без форматирования.


А я бы еще раз спросил: нафига "форматировать" целое число в XML?
Тредстартер настолько глуп, что не понимает: после "форматирования" - это не число, но строка.

Ну так, собственно, именно это я и предлагаю. В XML храним число, а строку на вывод генерим в XSLT. Всё по феншую.
18 июл 17, 17:46    [20655128]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить