Как объединить числа и строки для форматирования чисел в T-SQL?

У меня есть следующая функция

ALTER FUNCTION [dbo].[ActualWeightDIMS]
(
    -- Add the parameters for the function here
    @ActualWeight int,
    @Actual_Dims_Lenght int,
    @Actual_Dims_Width int,
    @Actual_Dims_Height int
)
RETURNS varchar(50)
AS
BEGIN

DECLARE @ActualWeightDIMS varchar(50);
--Actual Weight
     IF (@ActualWeight is not null) 
          SET @ActualWeightDIMS = @ActualWeight;
--Actual DIMS
     IF (@Actual_Dims_Lenght is not null) AND 
          (@Actual_Dims_Width is not null) AND (@Actual_Dims_Height is not null)
          SET @ActualWeightDIMS= @Actual_Dims_Lenght + 'x' + @Actual_Dims_Width + 'x' + @Actual_Dims_Height;


     RETURN(@ActualWeightDIMS);

END

но когда я попытался использовать его, я получил следующую ошибку: «Преобразование не удалось при преобразовании значения varchar« x »в тип данных int». когда я использую следующее утверждение выбора

select 
 BA_Adjustment_Detail.ID_Number [ID_Number],
 BA_Adjustment_Detail.Submit_Date [Submit_Date],
 BA_Category.Category [category],
 BA_Type_Of_Request.Request [Type_Of_Request],
 dbo.ActualWeightDIMS(BA_Adjustment_Detail.ActualWeight,BA_Adjustment_Detail.Actual_Dims_Lenght,BA_Adjustment_Detail.Actual_Dims_Width,BA_Adjustment_Detail.Actual_Dims_Height) [Actual Weight/DIMS],
 BA_Adjustment_Detail.Notes [Notes],
 BA_Adjustment_Detail.UPSCustomerNo [UPSNo],
 BA_Adjustment_Detail.TrackingNo [AirbillNo],
 BA_Adjustment_Detail.StoreNo [StoreNo],
 BA_Adjustment_Detail.Download_Date [Download_Date],
 BA_Adjustment_Detail.Shipment_Date[ShipmentDate],
 BA_Adjustment_Detail.FranchiseNo [FranchiseNo],
 BA_Adjustment_Detail.CustomerNo [CustomerNo],
 BA_Adjustment_Detail.BillTo [BillTo],
 BA_Adjustment_Detail.Adjustment_Amount_Requested [Adjustment_Amount_Requested]
from BA_Adjustment_Detail
inner join BA_Category 
on BA_Category.ID = BA_Adjustment_Detail.CategoryID
inner join BA_Type_Of_Request
on BA_Type_Of_Request.ID = BA_Adjustment_Detail.TypeOfRequestID

Что я хочу сделать, так это если ActualWeight не равен NULL, а затем вернуть ActualWeight для «Actual Weight / DIMS» или использовать Actual_Dims_Lenght, Width и Height.

Если это DIMS, то я хочу отформатировать вывод в LenghtxWidhtxHeight (15x10x4). ActualWeight, Adcutal_Dims_Lenght, Width и Height являются целыми (целыми) значениями, но выходные данные для «Actual Weight / DIMS» должны быть varchar (50).

Где я ошибаюсь?

поблагодарить

редактировать: пользователь может выбрать либо Вес, либо DIMS на странице ASP.net, и если пользователь выбрал DIMS, он должен указать Длина, Ширина и Высота. В противном случае он выдаст ошибку на странице ASP.net. Должен ли я беспокоиться об этом на стороне sql?

Ответы на вопрос(9)

Ваш ответ на вопрос