从不同的外部来源,我得到一些数据在NVarChar字段中的数据。到目前为止,我使用了一个带有CAST的REPLACE来确保数字带有","在哪里施放正确的方式。像这样:
<property>
<name>mapreduce.job.queuename</name>
<value>interactive.hive_queue</value>
</property>
这个工作得很好,但现在我得到的数据中还有一千个分隔符。就像这样:
select cast(replace('12,5',',','.') as float)
select cast(replace('12.5',',','.') as float)
它&#39;破碎。 有没有办法检测带有数字的NVarChar中使用的数据格式?
我尝试将TRY_PARSE与culture参数一起使用,如果有一千个分隔符但不是没有,它会很好用:
select cast(replace('2.012,5',',','.') as float)
select cast(replace('2,012.5',',','.') as float)
问题是我必须在UPDATE中使用它,并且数据格式可以在同一个表中有所不同。
有什么建议吗?
答案 0 :(得分:2)
您可以使用CHARINDEX()
计算出分隔符的位置以及它们在字符串中的位置以及CASE
表达式,以便在REPLACE
和{{1}之前处理不同的情况} CAST
:
FLOAT
<强>参考文献:强>
在表达式中搜索另一个表达式,并在找到时返回其起始位置。