我有一个包含 1 列且包含文本字段的数据库。我需要找到并安装具有特定子字符串的新列。我的英语不好,所以我会在下面尝试解释。

1 个字段的示例:

lorem ipsum dolor sit amet,consectuer adipiscing elit,sed diamy nonummy nibh euismod tincidunt ut laoreet laoreet dolore dolore magna aliquam aliquam erat volutpat。Ut Wisi Enim Ad Minim veniam,Quis Nostrud练习Ullamcorper Suscipit lobortis nisl nisl ut eeliquip equip ex ea commodo commodo Reactat。Duis Autem vel eum imiriure dolor in hendrerit in voldate velit velit esee molestie exationat,vel iLlum dolore eu eu feugiat feugiat nulla inulla a in XXXX:yyyyy Vero Eros et Accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis duis duis duis te feugait nulla facilisi。NAM LILE临时Soluta nobis Elefend选项会堂nihil opperdiet doming id quod quod mazim placerat facer possim假设。Typi non habent claritatem insitam;IIS Qui Facit eorum claritatem中的Est usus legentis。调查证明了lectorunt lectores legere me lius quod ii legunt saepius。claritas est eTiam processus dynamicus,qui seceritur突变体插座。Mirum est Notare Quam Littera Gothica,Quam Nunc Putamus Parum Claram,Antposuerit litterarum formas humanitatis人类人体Itakula Quarta Decima et quinta Decima。Eodem Modo tampi,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

我知道这可能是解决问题的方法,但我无法使其正常工作。(我已经看过这个: 使用 LOCATE 和 SUBSTRING 从 MySQL 返回特定文本)

附:“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 和正则表达式的文本块中:

$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