#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. Это именно то, что я получил из приведенных выше ответов Тима и Йенса, в любом случае, спасибо за ваши усилия.