0

このSQLサーバーストアドプロシージャクエリでは

SELECT HireResponseID,
       HireResponse,
       DateResponse,
       Comments,
       YearFileOpened,
       file_number,
       isCaseOpen,
       last_update,
       isConfidential,
       date_created,
       OurClient,
       TheirClient,
       ProjectName,
       description,
       lawyer_lastname,
       lawyer_firstname,
       Conflicts.ConflictID
FROM Hire_Response,
     Conflicts,
     Lawyers
WHERE Hire_Response.ConflictID=Conflicts.ConflictID
  AND Lawyers.lawyerID=Conflicts.lawyerID
  AND firmID = @FirmID
  AND HireID IN @HireID
  AND isStillaConflict = 1
ORDER BY file_number,
         TheirClient,
         OurClient,
         lawyer_lastname,
         lawyer_firstname

パラメーター@HireIDは、コンマで区切られた整数の文字列です (括弧で囲まれていません)。HireID整数が文字列に含まれているかどうかを確認したい@HireID。しかし、これを解析する方法がわかりません。

誰でも助けてもらえますか?

ありがとう

4

2 に答える 2

0

あなたの質問が理解できれば、HireID がリスト @HireID にある行を見つけたいと考えています。HireID の長さが一定で、リストが区切られている場合は、次のように使用できます。

AND @HireID LIKE '%'+CAST(HireID AS VARCHAR(5))+'%'

CHARINDEX を使用することもできます。

AND CHARINDEX(HireID,@HireID) > 0

編集:一貫性のない長さを説明するには、次を使用できます。

AND (@HireID LIKE '%'+CAST(HireID AS VARCHAR(5))+',%'
    OR @HireID LIKE '%,'+CAST(HireID AS VARCHAR(5))+'%')
于 2013-05-28T20:53:04.167 に答える
0

これを試してみてください -

DECLARE @HireID VARCHAR(100)
SELECT @HireID = '2,18'

;WITH cte AS 
(
    SELECT ID = t.c.value('.', 'INT')
    FROM (
        SELECT txml = CAST('<t>' + REPLACE(@HireID, ',', '</t><t>') + '</t>' AS XML)
    ) a
    CROSS APPLY txml.nodes('/t') AS t(c)
)
SELECT *
FROM Hire_Response
JOIN Conflicts ON Hire_Response.ConflictID = Conflicts.ConflictID
JOIN Lawyers ON Lawyers.lawyerID = Conflicts.lawyerID
WHERE firmID = @FirmID
    AND isStillaConflict = 1
    AND HireID in (SELECT ID FROM cte) 
ORDER BY file_number, TheirClient, OurClient, lawyer_lastname, lawyer_firstname
于 2013-05-29T05:39:00.930 に答える