2014-09-20 4 views
2

У меня есть этот запрос:Удалить Десятичный разделитель из денег

SELECT CONVERT(varchar, CAST(987654321 AS money), 1) 

И теперь результат:

987,654,321.00 

Но я хочу получить:

987,654,321 

Я хочу, чтобы это сделать в моем запросе, что мне делать?

+1

Mabe дайте нам contect? Мой стандартный ответ был бы «почему, черт возьми, вы идете varchar, чтобы начать с уровня SQL, а не на уровне приложения?». – TomTom

+0

@TomTom Да, я знаю, что могу это сделать на уровне приложения, но мне нужно это здесь, по некоторым причинам! –

+0

Также [остановите указание 'varchar' без определения длины] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length .aspx). –

ответ

1

Тип денег данных SQL Server не имеют десятичные разделители. Это двоичная структура в базе данных. Кажется, вы можете конвертировать тип данных денег в целое число в T-SQL и добавлять разделители. В этом случае попробуйте:

SELECT REPLACE(CONVERT(varchar, CAST(987654321 AS money), 1), '.00', ''); 
+0

Спасибо за ваше решение –

1

Я бы определенно не делать этого, но это будет работать, если вы абсолютно необходимо:

DECLARE @value varchar(50) 

SET @value = CONVERT(varchar(50), CAST(987654321 AS money), 1) 
SELECT LEFT(@value, len(@value) - 3) 

это вернет 987,654,321

+0

Я согласен с тем, что @bencripps не рекомендуется! – singhswat

Смежные вопросы