我一直试图用MySQL的REGEXP函数找到一种方法,只返回匹配行的一部分。
我正在做:从文本REGEXP "._cat._“的表中选择*
文本本身非常长(必须使用LONGTEXT字段才能将其放入表中)。所以我只想展示
猫
是否有办法使它只显示匹配的文本,而不是显示整个文本字段?
发布于 2014-02-25 18:02:42
找到答案了。使用MySQL UDF。
我很难在我的红帽服务器上安装这个。我遵循了以下步骤:
https://gist.github.com/kamermans/1658660 (如果页面消失了,下面是步骤:)
yum -y install pcre-devel gcc make automake mysql-devel这份文件是不可靠的。我刚在谷歌上搜索了文件名,然后在网上找到了。
wget http://www.mysqludf.org/lib_mysqludf_preg/lib_mysqludf_preg-1.0.1.tar.gz其余步骤应按以下所列步骤工作:
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发布于 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运算符。
https://stackoverflow.com/questions/22021082
复制相似问题