Roh*_*ain -2 sql sql-server casting type-conversion
我必须在SQL Server中将CAST' - '(连字符号)改为十进制(8,2).
我正在创建一个CTE并将一些数据转储到包含一些列的表中.对于1列,我需要转储' - 'AS DECIMAL(8,2).我将如何实现这一目标......
我在用
SELECT CAST('-' AS DECIMAL(8,2)) Column1
Run Code Online (Sandbox Code Playgroud)
抛出错误:将varchar转换为数据类型numeric的算术溢出错误.
"我知道上面的查询或铸造无法完成",但我需要以某种方式实现它!请帮忙
我有几个查询用于将数据转储到物理表中.除此之外,第一个查询是上面创建一个包含4列的表.在col1中我需要输入' - '符号,在其他查询中是一个十进制'列'.第二个查询是将数据插入到同一物理表中.在从这个动态创建的物理表中获取数据期间发生了一些计算.这就是我需要将' - '(连字符)转换为十进制列的原因
你的基本问题是什么?你有一个糟糕的映射.

我们有想要制作数字的字符串.问题是没有数值-因此,你需要对它做点什么.您的问题的问题在于,您没有指出代码在错误值的情况下应该执行的操作.
如果您正在使用SQL Server 2012+,我们有一个TRY_CAST方法将尝试进行数据类型转换,如果不能,则该方法返回NULL.
IsNumericSQL Server内置了一个功能,但它不是100%可靠(需要引用).将其与CASE表达式配对,这将使Gordon的答案变得一致.
否则,您需要在源查询中添加过滤器以过滤掉那些不良行.在约会之前我遇到了类似的情况