2017-03-07 23 views
-1

私はXML列をMySQL列に入力しています。結果が成功であれば、セルは次のようになります。XML文字列から数値を引き出す

<?xml version="1.0" encoding="UTF-8"?> 
<success> 
    <jobNumber>8038281923</jobNumber> 
</success> 

それが失敗である場合、それは変化するが、セルはおおよそ次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<failure> 
    <message>blah blah</message> 
</failure> 

私はUPDATEクエリを記述しようとしています成功した場合は、jobNumberの値がXML文字列から抽出され、列job_numの隣接セルに書き込まれます。 jobNumber(障害など)がない場合、job_num0に設定されます。

+0

[XML関数についてのマニュアルを見ました](https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html)、より具体的な質問がありますか? – tadman

+0

私は一般的な関数ExtractValue()があることを理解しています...私はちょうど、この場合、それを適用する方法の構文がわかりません... – PhoenixTech

+1

あなたにそれを見せるために野生の刺しを取る必要があるかもしれません何かを試した。ちょっと実証された努力は遠くに行きます。 – tadman

答えて

1

は、私は今、私はちょうどWHERE jobNumber INを行うために、テーブルに値を格納する必要はありません、ネストされたSELECTの一部としての機能を使用する方法を考え出し:あなたの援助のためのすべての

SELECT x.jobNumber, l.* FROM 
(
SELECT lead_id, ExtractValue(xml_response, '//jobNumber') as jobNumber 
from xml_table 
WHERE status = 1 
) x 

JOIN leads l on x.lead_id = l.lead_id 

WHERE jobNumber IN (87242345,87441456) 

感謝。

+0

これは抽出された値の列と同様に機能しません。また、 'ExtractValue'の使用は結合とは関係ありません。あなた自身の問題を解決するための名誉! –

+0

あなたは正しいです。それは問題であった 'JOIN'ではありません。それは 'jobNumber IN'です。私は自分の投稿を変更しました。 – PhoenixTech

関連する問題