对你们我有一个非常棘手的问题。所以,听我在我的一个表列中有一个带空格和数字的字段。关键部分是在十进制字段中转换内容。缺点基本上是对于某些行我可以得到类似的东西:
' 1584.00 '
' 156546'
'545.00 '
' '
所以,为了清理我的专栏,我做了一个LTRIM和RTRIM所以空间不见了。所以现在对于记录只是空格的几个记录,新内容是''。最后我需要将此结果转换为小数。
问题:对于只争用空格的字段,新结果是''而且我无法在此处应用REPLACE,因为它是空白,下面的代码不起作用:
SELECT REPLACE('','','0')
-- Final current verison
SELECT CAST(COALESCE(REPLACE(REPLACE([Gross_Weight],' ','0'),',',''),'0') AS DECIMAL(13,3))
我怎么能搞清楚?
非常感谢
答案 0 :(得分:1)
SELECT COALESCE(NULLIF(MyColumn, ''), 0)
这有副作用,您也可以将NULL值转换为0,这可能是您不想要的。如果这是一个问题,那么一个简单的CASE
语句应该可以解决这个问题:
SELECT CASE WHEN MyColumn = '' THEN 0 ELSE CAST(MyColumn AS DECIMAL(10, 4)) END
显然,你还必须加入你已经在做的任何其他操作。
答案 1 :(得分:1)
无需替换,只需将零连接到列,例如
SELECT RTRIM('0' + LTRIM(column))
答案 2 :(得分:0)
我假设您的数据在表格中。 让我们称这个表'DATA'和'VALUE'列 然后您可以使用以下查询
UPDATE DATA SET VALUE = 0 where VALUE = ''
要选择值,请执行以下操作
select case ltrim(rtrim([Gross_Weight])) when ''
THEN 0
ELSE ltrim(rtrim([Gross_Weight])) END
如果我的要求错误,请告诉我。