Не удалось вернуть после десятичного значения при объединении ‘$’ sing перед значением flot

#sql #sql-server-2012 #concatenation

#sql #sql-server-2012 #объединение

Вопрос:

Я ищу быстрое решение, каким бы оно ни было, я могу изменить логику предложенным способом:

 CREATE TABLE #tmpTable(id INT, exposure FLOAT)
INSERT INTO #tmpTable
SELECT 1, 171325.69

SELECT '$ ' cast(exposure AS VARCHAR) Exposure FROM #tmpTable
--OR-- 
SELECT concat('$ ',exposure) Exposure FROM #tmpTable

DROP TABLE #tmpTable

--Output
Exposure
$ 171326

--Desired
$ 171326.69
  

Я думаю, способ не является абсолютным, поэтому, пожалуйста, помогите мне решить эту проблему.

Комментарии:

1. В чем проблема SELECT concat('$ ',exposure) Exposure FROM #tmpTable ? Возможно, вам потребуется ПРИВЕДЕНИЕ

Ответ №1:

 CREATE TABLE #tmpTable(id INT, exposure NUMERIC(18,2))
INSERT INTO #tmpTable
SELECT 1, 171325.69

SELECT '$ ' cast(exposure AS VARCHAR) Exposure FROM #tmpTable
--OR-- 
SELECT concat('$ ', exposure) Exposure FROM #tmpTable

DROP TABLE #tmpTable
  

Наличие вашей таблицы в виде NUMERIC решит вашу проблему и вернет ожидаемый результат с использованием обоих методов.

Комментарии:

1. Большое вам спасибо, это работает нормально, поэтому это называется решением из корня 🙂

Ответ №2:

Это должно сработать:

 SELECT '$'   CONVERT(VARCHAR, CONVERT(DECIMAL(8,2), exposure))
FROM #tmpTable
  

Ответ №3:

используя изменение типа данных для отображения столбца на десятичный, затем

             cREATE TABLE #tmpTable(id INT, exposure DECIMAL(8,2))
            INSERT INTO #tmpTable
            SELECT 1, 171325.69
            select * from #tmpTable

            SELECT '$ ' cast(exposure AS VARCHAR) Exposure FROM #tmpTable
            --OR-- 
            SELECT concat('$ ',exposure) Exposure FROM #tmpTable
  

Если не хотите изменять тип данных на десятичный, используйте приведенный ниже запрос :

             SELECT '$'   CONVERT(VARCHAR, CONVERT(DECIMAL(8,2), exposure))
            FROM #tmpTable
  

Комментарии:

1. Это именно то, что я получил из приведенных выше ответов Тима и Йенса, в любом случае, спасибо за ваши усилия.