SQL Server中的Concat和convert
我正在尝试将5列合并为一列,听起来很简单,但是要合并该列的结果表是一个SQL Server中的Concat和convert,sql,sql-server,Sql,Sql Server,我正在尝试将5列合并为一列,听起来很简单,但是要合并该列的结果表是一个varchar,现在我已经尝试了,但它似乎不起作用 这是我的代码: INSERT INTO [RepositoryCoSD].dbo.AnimalProducts SELECT [DataSeriesID] , concat_ws(CONVERT(INT, CASE WHEN IsNumeric(CONVERT(VARCHAR(12
varchar
,现在我已经尝试了,但它似乎不起作用
这是我的代码:
INSERT INTO [RepositoryCoSD].dbo.AnimalProducts
SELECT
[DataSeriesID]
, concat_ws(CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), DataSeriesID)) = 1
THEN CONVERT(VARCHAR(12), DataSeriesID)
ELSE 0
END) , '-', '-')
,[CommodtiySubCommodityID]
,[Commodity]
,[SubCommodity]
,[SectorID]
,[Sector]
,[GroupID]
,[GroupName]
,[StatisticTypeID]
,[StatisticType]
,[SourceID]
,[Source]
,[SourceDescription]
,[PhysicalAttributeTypeID]
,[PhysicalAttributeType]
,[PhysicalAttributeDesc]
,[UtilizationPracticeID]
,[UtilizationPractice]
,[ProductionPracticeID]
,[ProductionPractice]
,[SourceSeriesID]
,[TimeID]
,[TimeFrequency]
,[Date]
,[GeographyID]
,[GeographyType]
,[City]
,[County]
,[State]
,[Region]
,[Country]
,[UnitID]
,[Unit]
,[LifecyclePhaseID]
,[LifecyclePhaseDescription]
,[Value]
FROM
AnimalProductsCoSD.CoSD.Public_Standard_View
我需要合并5列UnitID、GeoID、TimeID、LifecyclePhaseID
和DataseriesID
我得到了这个错误
将varchar值'-132-'转换为数据类型int时,转换失败
有什么想法吗?你试过了吗
它将自动将参数转换为字符串。这比使用显式转换要简单一些
您也可以添加其他字符:
CONCAT(UnitID,'-',GeoID,'-',TimeID,'-',LifecyclePhaseID,'-',DataseriesID)请参见CONCAT的语法 CONCAT_WS(分隔符,argument1,argument2[,argumentN]…) 试着把你的陈述重新写成
CONCAT_WS('-',CONVERT(VARCHAR(10),UnitID), CONVERT(VARCHAR(10),GeoID), CONVERT(VARCHAR(10),TimeID), CONVERT(VARCHAR(10),LifecyclePhaseID), CONVERT(VARCHAR(10),DataseriesID))
其实
concat_ws(CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), DataSeriesID)) = 1 THEN CONVERT(VARCHAR(12),DataSeriesID)
ELSE 0 END) ,'-','-')
行应该是第一行,因为在结果表中,合并列必须是第一行,很抱歉造成混淆我这样做了,它不起作用,我还想介于两者之间values@BharatRadhakrishnan . . . 然后在需要的地方添加连字符。
concat_ws(CONVERT(INT,
CASE
WHEN IsNumeric(CONVERT(VARCHAR(12), DataSeriesID)) = 1 THEN CONVERT(VARCHAR(12),DataSeriesID)
ELSE 0 END) ,'-','-')