[英]Convert string number to decimal
我有几列实际上是数字的字符串格式,但其中有些是空的。 如何将它们转换为文本-我遇到了错误。
这是我的示例:
Select
MES_MACHINE
,[TubeJobNo]
,LEFT (Customer_Name, 25) AS Customer
,Sales_Order_Line_No AS OrderNo
,[AFL_O2MES_SO_DJ].[Child_Job_Number]
,CAST(Setup AS decimal) --- that worked
,ISNULL(FORMAT([FinalDataOp Completion],'N0'),'')
AS FinalDataOpCompletion --- that does not work, how do you convet this?
,ISNULL(FORMAT([JobFinishedWIP Issue Fiber Set]*FibersCount,'N0'),'')
AS TotalLengthConsumed
样本数据:
5,675
5,666
5,674
5,663
5,557
5,543
5,675
5,662
这是错误:
消息8114,级别16,状态5,第18行将数据类型nvarchar转换为数值时出错
这是由于数字中的千位分隔符。 您可能想要做的是首先更新列。
update table
set [FinalDataOp Completion]=replace([FinalDataOp Completion],',','')
然后再次运行查询。
由于您的电话号码包含逗号,因此出现错误,您首先需要替换逗号,然后再将其转换为整数。 参见下面的示例。
这会起作用
select cast(replace('5,675', ',', '') as int)
当您得到时,这将给出错误-
select cast('5,675' as int)
注意:还可以使用IsNumeric()SQL函数在转换之前检查字符串是否为数字。
我创建了#tem
表取决于您的数据
create table #tem (setup nvarchar(20))
insert into #tem values('5,675'),
('5,666'),
('5,674'),
('5,663'),
('5,557'),
('5,543'),
('5,675'),
('5,662')
SELECT convert(decimal(15,4), REPLACE(setup, ',', '.')) from #tem
其实答案是
SELECT convert(decimal(15,4), REPLACE(yourcolumname, ',', '.')) from yourtable
希望能帮助到你。
谢谢大家。 我最终使用了TRY_Convert函数。 这里是有兴趣的人的代码示例:
,TRY_CONVERT (int,[StagingDB].[dbo].[AFL_O2MES_TubeJob].Primary_Qty) As [TargetLength] ,ISNULL(TRY_CONVERT (int, [FinalDataOp Completion]),'') AS FinalDataOpCompletion ,ISNULL(TRY_CONVERT (int,[JobFinishedWIP Issue Fiber Set]*Count),'') AS TotalLengthConsumed
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.