سؤال

لدي قاعدة بيانات تحتوي على عمود واحد يحتوي على حقول نصية.أحتاج إلى العثور على عمود جديد وتركيبه بسلسلة فرعية محددة.لغتي الإنجليزية ليست جيدة، لذا سأحاول أن أشرح أدناه.

مثال لحقل واحد:

lorem ipsum dolor sit amet ، incectetuer adipiscing elit ، sed diam nibh nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.ut wisi enim ad minim endiam ، quis nostrud tation ulamcorper suscipit lobortis nisl et aliquip ea ea commodo.DUIS Autem Vel eum iriure dolor في Hendrerit في Vulptate Velit Esse molestie نتيجة ، فيل Dolore Eu feugiat nulla facilisis في XXXX :yyyyy vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit ugue duis dolore te feugait nulla dacilisi.Nam Liber Tempor cum soluta nobis eleifend congue nihil imperdiet doming id quod mazim placerat facer possim.النوع غير واضح تمامًا;EST usus legentis في IIS QUI Facit eorum Claritatem.التحقيقات emplistaverunt lectores regere me lius quod ii legunt saepius.Claritas est etiam processus dynamicus ، Qui sequitur muitationem consuetudium lectorum.mirum est notame quam littera gothica ، quam nunc putamus parum Claram ، anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta decima.eodem modo typi ، qui nunc nobis videntur parum Clari ، fiant sollemnes in futurum.

أحتاج إلى العثور على قيمة واستخراجها yyyyy الذي يأتي بعد xxxx :, وموضع المتغير داخل النص.لقد جربت هذا حتى الآن:

SELECT 
 SUBSTRING_INDEX(
 RIGHT(description, 
 GREATEST(LOCATE('xxxx :', description),
 LOCATE('xxxx :', description))-1), ' ', -1)
FROM wwwww

أعلم أن هذه قد تكون الطريقة لحل المشكلة، لكن لا يمكنني أن أجعلها تعمل بشكل صحيح.(لقد نظرت إلى هذا بالفعل: قم بإرجاع نص محدد من MySQL باستخدام LOCATE وSUBSTRING)

ملاحظة:"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 : (ربما مع أو بدون مسافات حولها :) في كتلة نصية باستخدام PHP و regex:

$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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top