MySQLフィールド内の特定のサブストリングを見つけます
質問
テキストフィールドを持つ1列のデータベースを持っています。特定の部分文字列を持つ新しい列を見つけてマウントする必要があります。私の英語は良くないので、私は以下に説明しようとします。
1フィールドの例:
Lorem Ipsum Dolor Sit Set Site Amet、Pescentuer Adipiscing Elit、SED Diam Nonummy Nibh Euismod Tincidunt Ut Laoreet Dolore Magna Aliquam Erat ボランタット。 UT WISI ENIM AD Minim Veniam、Quis Nostrud Creatiation Ullamcorper Suscipit Lobortis Nisl UT Aliquip EX EA Commodoの結果。 Velit Esseの中のHendReritのDuis Autem Vel Eum Iriure Dolor Molestieの結果、Vel Illum Dolore Eu Feugiat Nulla Facilisis xxxx:yyyy Vero Eros et Accupsan et Iusto Odio Dignissim Qui Blandit Praesent Luptatum ZZRIE DELENIT AUGUE DUIS DOLORE TE Feugait ヌラ・ファクチリジ。 NAM LIBERの一時Cum Soluta Nobis Eleifendオプション Congue Nihil ImpedietドームID Quod Mazim Placerat Facers 鼻。標高非居住CLARITATEM INSITAM。 IISのEST USUSレジェンティス Qui Facit Eorum Claritatem。デモVerunt Lectoresを調査します Legere Me Lius Quod II Legunt Saepius。 Claritas Estiam Processus Dynamicus、Qui Sequitur Mutationem Consuetudium Lectumium。ミラムエストリー NOTAはQuam Littera Gothica、Quam Nunc Putamus Parum Claram、 Saisula Quarta Quarta Quartaのヒューマタチス系 Quinta Decima。 Eodem Modo Typi、Qui Nunc Nobis VideNTUR Parum Clari、Futurumでのおかしな。
yyyyy
の後に来るxxxx :
とテキスト内の変数の位置を見つけて抽出する必要があります。これまでのところ、私はこれを試してみました:
SELECT
SUBSTRING_INDEX(
RIGHT(description,
GREATEST(LOCATE('xxxx :', description),
LOCATE('xxxx :', description))-1), ' ', -1)
FROM wwwww
.
私はそれを解決する方法であるかもしれないことを知っていますが、私はこれを正しくすることはできません。 (これはすでに:href="htps://stackoverflow.com/questions/17911334/1ulurn-sql-using-locate-and-substring"> MySQLからの特定のテキストを返すLOCATEとSUBSTRING を使用する
PS:「XXXX:」常に同じ... YYYYYは変数値
を持っています解決
これを試してみてください
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(description,'XXXX : ',-1),' ',1) from wwwww
.
これは sqlfiddle
なぜそれが機能していないのかわからないこのバリエーションを試してみてくださいこの機能があるかどうかを確認
SELECT SUBSTRING_INDEX(RIGHT(post_content,LENGTH(post_content) - (LOCATE('XXXX : ',post_content)+6)),' ',1) as var from wp_posts
. 他のヒント
xxxx :
(:
の周囲のスペースのない場合は、一般的な場合)を見つけるために:
$subject = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, vel illum dolore eu feugiat nulla facilisis at XXXX : yyyyy vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.";
# Case insensitive match.
$pattern = '/XXXX\s?:\s?(\w+)/i';
# If `XXXX` really has to be all caps, remove the `i` flag, like so:
#$pattern = '/XXXX\s?:\s?(\w+)/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches[1]);
$matched_text = $matches[1][0];
echo $matched_text;
$match_position = $matches[1][1];
echo $match_position;
.