0

1 つまたは 2 つのテーブルに参加する必要があります。1 つのテーブルに給与フィールドがあります。したがって、フィールドがnullの場合も計算を行い、0を返すことを意味します。したがって、len()を使用します。しかし、正しい値にアクセスできません。len()条件の前に結合を使用すると、結果が得られます。しかし、結果の 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(nullの場合))

ジョブに挿入 ( 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 に答える