2015-03-30 65 views
-1

这是试图运行此查询时,我得到的错误:转换VARCHAR值‘307 307 307’时转换失败“...”到的数据类型为int

转换失败到 数据类型int。

查询:

select count(sd.mrid) 
    ,replace(replace(substring(sd.mrref_to_mr, charindex('l', sd.mrref_to_mr), len(sd.mrref_to_mr)), 'l', ''), 'x10', '') 
where sd.mrref_to_mr like '%x10' 
group by replace(replace(substring(sd.mrref_to_mr, charindex('l', sd.mrref_to_mr)), 'l', ''), 'x10', '') 
    , imw.mrtitle 
order by replace(replace(substring(sd.mrref_to_mr, charindex('l', sd.mrref_to_mr)), 'l', ''), 'x10', '') desc 

,它的抱怨领域是这样的:

L5587x6 5587或将有类似5587L5587x6

我需要的只是5587但我需要它看起来像一个数值。我只需要匹配到另一个领域是MRID,它是一个int

+0

随着最近一次对您的查询的编辑,您不再有一个from子句。 (在这里我并不想挑剔,但是如果你要在你的查询中尝试一组相当复杂的嵌套字符串函数,你真的必须注意细节。你的两个版本我看到的查询都有基本的语法错误,没有人能够在没有看到实际的查询失败的情况下帮助你,而不是语法错误的类似查询。) – DeadZone 2015-03-31 18:58:48

回答

0

你有你的SELECT子句中不匹配的括号。格式化它看起来像:

select count(sd.mrid) , 
     replace(
      replace(
       substring(sd.mrref)to_mr, charindex('l', sd.mrref_to_mr), len(sd.mrref_to_mr) 
      ), 'l', '' 
     ), 'x10', '') 

我想你可能已经削减了一个功能,只能删除它的一部分。

+0

substring(sd.mrref)to)mr应该已经子字符串(sd.mrref_to_mr – RBC 2015-03-31 15:41:46

+0

我会尽我所能更新我的答案。现在发布的查询有不同的语法错误。 – DeadZone 2015-03-31 19:00:18

相关问题