2017-11-15 34 views
1

申し訳ありませんが、これは既に尋ねられていますが、私の問題の解決に役立つ回答が見つかりませんでした。mysqlの文字列から部分文字列を取得する方法

私は、文字列の場所がどこにでもできる文字列から国の名前を抽出する必要があります。

例データ列

1) Location - Living in: United States, Age: 18+, (and so on) 
2) Location: United Kingdom, Excluded Connections: France, 
3) Age: 65+, Language: english, Living in: United States, 

だから、これらの例については、私はちょうど

1) United States 
2) United Kingdom 
3) United States 

そのカンマ区切りのすべてが必要になりますが、私はそれは私が必要な値を見つけるために取得するように見えることはできません。また

私の現在のセットアップ

Select bio, 
SUBSTRING_INDEX(SUBSTRING_INDEX(a.`targeting`,'Location: ',-1),',',1) AS country 
from table1 

の書式設定のため申し訳ありません!これを正しくフォーマットするのに問題があります。クエリが動作するはずです後

+2

あなたが提供している3つの例では 'Location:'が機能しないので、あなたが持っているフォーマットに基づいて、特定の文字列を検索する必要があります。 – kchason

+1

居住地:and Location:唯一のプレフィックス? – SEarle1986

+0

許可された国名のテーブルを作成して、このフィールドにLIKE演算子を使用してそのテーブルを結合できますか?さもなければ、いくつかのぎこちない文字列の解析、検索、および無限の縁の場合があります。 – JNevill

答えて

0

(私は与えられたサンプルデータにテストしてみたし、それが正常に動作しています):

また、私はa.targetingは、クエリごとにこれらの文字列を含む列であると仮定しました。

SELECT 
(case when LOCATE("Location - Living in", a.targeting) > 0 
      then SUBSTRING_INDEX(SUBSTRING_INDEX(a.targeting,"Location - Living in: ",-1),",",1) 
     when LOCATE("Location:", a.targeting) > 0 
      then SUBSTRING_INDEX(SUBSTRING_INDEX(a.targeting,"Location:",-1),",",1) 
     when LOCATE("Living in:", a.targeting) > 0 
      then SUBSTRING_INDEX(SUBSTRING_INDEX(a.targeting,"Living in:",-1),",",1) 
    end) AS country; 

希望すると助かります!

関連する問題