sql server:将数据类型nvarchar转换为十进制时出错

w7t8yxp5  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(420)

下面的代码打开了一条json消息,并插入了与 post_metric_score table。一般来说,它可以正常工作,除非值如下:

  1. "disgust": 5.6780936574796215e-05.

我得到的错误是
将数据类型nvarchar转换为十进制时出错

  1. INSERT INTO [Database].[post_metric_score] ([post_id], [metric_id], [score])
  2. SELECT @post_id, 4, [score]
  3. FROM OPENJSON(@postJson, '$.sentiment_results.emotions')
  4. WITH ([score] DECIMAL(12, 8) '$.disgust')

我试图在select语句中添加convert语句,但它不起作用。

  1. SELECT @post_id, 6, CONVERT(DECIMAL(12,8), [score]) AS [score]

你知道我做错了什么吗?

oxcyiej7

oxcyiej71#

尝试以字符串形式检索值并使用 try_convert() :

  1. INSERT INTO [Database].[post_metric_score]([post_id], [metric_id], [score])
  2. SELECT @post_id, 4, try_convert(decimal(12, 8), try_convert(float, [score]))
  3. FROM OPENJSON(@postJson, '$.sentiment_results.emotions')
  4. WITH ([score] VARCHAR(255) '$.disgust') ;

或者直接使用浮点数:

  1. INSERT INTO [Database].[post_metric_score]([post_id], [metric_id], [score])
  2. SELECT @post_id, 4, try_convert(decimal(12, 8), try_convert(float, [score]))
  3. FROM OPENJSON(@postJson, '$.sentiment_results.emotions')
  4. WITH ([score] float '$.disgust') ;

相关问题