0

我需要加入一两张桌子。一张表有工资字段。因此,如果该字段为 null 意味着它返回 0,我也会进行一些计算。所以我使用len()。但我无法访问正确的值。当我在len()条件之前使用 join 时,我有一个结果。但是结果 id 列像 1,4,46,89 一样无序, ......类似的东西。我不知道为什么。

我的疑问是,

 CAST(SUBSTRING(CAST(o.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', o.Budget))*100000

 + SUBSTRING(CAST(o.Budget AS VARCHAR(50)), PATINDEX('%laks%', o.Budget) + 4, 
    patindex('%Thousands%', o.Budget) - PATINDEX('%laks%', o.Budget) - 4)* 1000 AS   VARCHAR(50))+')'

    FROM requirementsdetailsfororganization o 
    right Join Requirementsregistereddetails AS r ON r.registereddate=r.registereddate
    left join Requirement_Contact_Details as rc ON rc.RequirementID=o.requirementId
    **where len(o.Budget)<>0** 

在上面的代码中,我使用了这个条件。但是为什么它显示这种类型的值。

我的输出:

插入工作( 1 ,85000)

插入工作(3 ,205000)

插入作业(4 ,0(当为空时))

插入工作(16 ,145000)

插入工作( 18 ,110000)

在前面的结果中,我加粗的值是 Id。当我使用 len() 时,它是无序的,并且在值的范围内遗漏了一些值

有人建议我的问题吗?

4

1 回答 1

0
 CAST(SUBSTRING(CAST(o.Budget AS VARCHAR(50)), 0, PATINDEX('%laks%', o.Budget))*100000

 + SUBSTRING(CAST(o.Budget AS VARCHAR(50)), PATINDEX('%laks%', o.Budget) + 4, 
    patindex('%Thousands%', o.Budget) - PATINDEX('%laks%', o.Budget) - 4)* 1000 AS   VARCHAR(50))+')'

    FROM requirementsdetailsfororganization o 
    right Join Requirementsregistereddetails AS r ON r.registereddate=r.registereddate
    left join Requirement_Contact_Details as rc ON rc.RequirementID=o.requirementId
    where len(isnull(o.Budget, ":D"))<>0
于 2013-04-18T09:46:25.180 回答