1

SQL Server 2008 を使用して、結果を 3 つの個別の式に分割する必要があります。

私が現在得ている結果は、例えばです。"person: man tel: yes rel: Christian msg: misc text"

次のように分割する必要があります。

"Person: man" "Tel: yes" "Rel: Christian" "Msg: misc text"

「tel」の前のビットを返すために iif ステートメントを使用してきましたが、tel と rel などの間でのみ返されるようにすることはできません。次のセクションに進む前に、(長さも)何でもかまいません。誰でも助けてもらえますか?フォーラムの他の同様の質問は、最初の表現では役に立ちましたが、後の表現は少し難しくなっています。

4

3 に答える 3

0

これは、SSRS ではなく SQL で非常に簡単に実現できます。これは SQL で行うことを強くお勧めします。CHARINDEX 関数を使用して、文字列を 4 つの個別の列 (person、tel、Rel、Message) に分割できます。

于 2015-07-09T14:47:55.083 に答える
0

これは、SQL の場合とほとんど同じ方法で SSRS で実現できます。つまり、INSTR (SQL Server では CHARINDEX) とMID (SQL では SUBSTRING) を使用して場所を見つけ、文字列を解析します。スペースを区切り文字として使用していて、データにスペースが含まれているという問題があります ("Msg: misc text ")。

まず、データセットに計算列を作成して、スペース区切りを別の文字に変更し、スペース区切りを見つけやすくします。めったに使用されないため、通常はパイプ ( | ) を使用します。

=REPLACE(REPLACE(REPLACE(FIELDS!YourFIELD!.VALUE, ": ", "`"), " ", "|"), "`", ": ")

列 1: =MID(First(Fields!txt2.Value, "DISPUTES"), 1, INSTR(Fields!txt2.Value, "|") - 1)

列 2: =MID(MID(Fields!txt2.Value, INSTR(Fields!txt2.Value, "|") + 1, LEN(Fields!txt2.Value) ), 1, INSTR(MID(Fields!txt2.Value, INSTR(Fields!txt2.Value, "|") + 1, LEN(Fields!txt2.Value) ), "|") - 1)

列 3 と 4 は似ていますが、もう少し複雑です。

于 2015-07-10T00:02:38.607 に答える
0

SQLメソッドの場合、これは私が行ったテストで機能します:

SELECT LEFT(txt, CHARINDEX('tel:',txt)-2) AS part1,
    SUBSTRING(txt, CHARINDEX('tel:',txt), CHARINDEX('rel:',txt)-CHARINDEX('tel:',txt)) AS part2,
    SUBSTRING(txt, CHARINDEX('rel:',txt), CHARINDEX('msg:',txt)-CHARINDEX('rel:',txt)) AS part3,
    RIGHT(txt, LEN(txt)-CHARINDEX('msg:',txt)+1) AS part4
FROM (
    SELECT 'person: man tel: yes rel: christian msg: misc text' AS txt
) AS t
于 2015-07-10T00:03:39.487 に答える