首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Regex只显示匹配部分

MySQL Regex只显示匹配部分
EN

Stack Overflow用户
提问于 2014-02-25 17:00:20
回答 2查看 706关注 0票数 0

我一直试图用MySQL的REGEXP函数找到一种方法,只返回匹配行的一部分。

我正在做:从文本REGEXP "._cat._“的表中选择*

文本本身非常长(必须使用LONGTEXT字段才能将其放入表中)。所以我只想展示

是否有办法使它只显示匹配的文本,而不是显示整个文本字段?

EN

回答 2

Stack Overflow用户

发布于 2014-02-25 18:02:42

找到答案了。使用MySQL UDF。

预浸

我很难在我的红帽服务器上安装这个。我遵循了以下步骤:

https://gist.github.com/kamermans/1658660 (如果页面消失了,下面是步骤:)

代码语言:javascript
复制
yum -y install pcre-devel gcc make automake mysql-devel

这份文件是不可靠的。我刚在谷歌上搜索了文件名,然后在网上找到了。

代码语言:javascript
复制
wget http://www.mysqludf.org/lib_mysqludf_preg/lib_mysqludf_preg-1.0.1.tar.gz

其余步骤应按以下所列步骤工作:

代码语言:javascript
复制
tar -zxvf lib_mysqludf_preg-1.0.1.tar.gz
cd lib_mysqludf_preg-1.0.1
./configure
make install
echo "You'll need to enter your MySQL password a few times to install the UDFs and test them"
mysql -u root-p < installdb.sql
make test
票数 1
EN

Stack Overflow用户

发布于 2014-02-25 17:03:47

根据你的评论:

现在我理解了您需要做什么,答案是,在MySQL中不存在这种情况。MySQL不是一种解析冗长文本文件的语言。您需要编写一个连接到MySQL的Perl脚本,或者使用其他通用语言来进行解析。

所以答案是否定的。

没有办法显示匹配的文本,即使这样也没有意义。如果text列真的那么长,则不必在select查询中获取它。

或者您可以做一些类似于MySQL子串函数的操作,只获取前n个字符。

select substring(text, 0, 10) from table where text like '%cat%';

这里不需要使用REGEXP函数。您可以使用上面所示的like运算符。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22021082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档