繁体   English   中英

协助正则表达式mysql查询

[英]Assistance with a regular expression mysql query

我有一个数据库列,其数据看起来像file_name ||| file_id ||| field_id我想运行一个查询来仅用file_id替换数据。

因此,我的查询本质上需要解析管道之间的file_id,然后更新字段以仅使用文件ID替换完整字符串。

您可以使用旧格式查找行

WHERE mycol LIKE '%|||%|||%';

要提取您可以使用的中间字段

SUBSTRING_INDEX(mycol, '|||', -2)

哪个会返回'fileid ||| fieldid',然后呢

SUBSTRING_INDEX(SUBSTRING_INDEX(mycol, '|||', -2), '|||', 1)

这将返回'fileid'。

所以:

UPDATE mytable SET mycol = SUBSTRING_INDEX(SUBSTRING_INDEX(mycol, '|||', -2), '|||', 1) WHERE mycol LIKE '%|||%|||%';

但首先我要检查一下

SELECT 
    mycol AS beforethecure,
    SUBSTRING_INDEX(SUBSTRING_INDEX(mycol, '|||', -2), '|||', 1) AS afterthecure
FROM mytable
WHERE mycol LIKE '%|||%|||%';

以防万一。 也许在'after'的结果上有一个SELECT,看看它们是否符合fileid的语法。

尝试

SELECT SUBSTRING( SUBSTRING_INDEX('file_name|||file_id|||field_id','|||', 2), 
                 LOCATE('|',  'file_name|||file_id|||field_id' ) + 3  ) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM