0

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

1 个字段的示例:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat。Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat。Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at XXXX : yyyyyvero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi。Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum。Typi non habent claritatem insitam; iis qui facit eorum claritatem 中的 est usus legentis。调查 demostraverunt lectores legere me lius quod ii legunt saepius。Claritas est etiam processus dynamicus, qui sequitur mutationem consuetudium lectorum。Mirum est notare 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

我知道这可能是解决它的方法,但我不能让它正常工作。(我已经看过了:Return specific text from MySQL using LOCATE and SUBSTRING

PS:“XXXX:”总是一样的...... yyyyy 有一个变量值

4

2 回答 2

2

请试试这个

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
于 2014-01-10T20:48:33.050 回答
0

使用 PHP 和正则表达式在文本块中查找后面的第一个单词(或字符串)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;
于 2014-01-11T02:55:48.870 回答