某晚深夜,某人问了个奇怪的问题,select sql 中,怎么快速的用表字段的注释作为列名称???这是什么操作??一时理解不了
细问,是这般操作,存在表 foo_table
CREATE TABLE `foo_table` (
`id` int(11) NOT NULL COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '名字',
`age` int(2) NOT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Foo表';
希望查找数据时候,是这样的 sql ,把 comment 作为结果列的名称
select
`id` as '主键',
`name` as '名字',
`age` as '年龄'
from foo_table
想了一会儿,能不能用正则,只要把 int(11) NOT NULL COMMENT
替换成 as 问题就解决了?
打开IDEA,新建文本,输入
select
`id` int(11) NOT NULL COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '名字',
`age` int(2) NOT NULL COMMENT '年龄',
from foo_table
希望替换成
select
`id` as '主键',
`name` as '名字',
`age` as '年龄',
from foo_table
CTRL R ,选择 Regex 模式,沉默甚久,想不出怎么找出第二个 ` 到后面第一个 ' 的正则语句。。。
但又想,是否可以分组替换呢?把
`id` int(11) NOT NULL COMMENT '主键',
分成3组:
[`id` ][int(11) NOT NULL COMMENT][ '主键',]
idea 替换的方式可否替换第2组为 as ?
Google后发现,在替换框中,是支持查找框的正则分组的,用 $1 代表组1,含义是的用组1的值替换匹配到的字符。
思路很清晰,只要写出分三组的正则,按照原始顺序,保留第1组及第3组,把第2组替换成 as 即可
分组的正则如下
`id` int(11) NOT NULL COMMENT '主键',
(`\w+`\s+)(.+COMMENT)(\s+'.+')
第1组对应(注意后面有空格):
`id`
第2组对应(前后没有空格)
int(11) NOT NULL COMMENT
第3组对应(注意前面有空格)
'主键',
IDEA的查找框输入
(`\w+`\s+)(.+COMMENT)(\s+'.+')
IDEA的替换框输入
$1 as $3
选择替换全部,则
select
`id` int(11) NOT NULL COMMENT '主键',
`name` varchar(20) NOT NULL COMMENT '名字',
`age` int(2) NOT NULL COMMENT '年龄',
from foo_table
替换为
select
`id` as '主键',
`name` as '名字',
`age` as '年龄',
from foo_table
参考:
https://stackoverflow.com/questions/34698359/replacing-using-named-capture-groups-in-intellij-idea
本文由 ONE 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
如有版权疑问交流,请给我留言:oneisall8955@gmail.com
本文永久链接:https://liuzhicong.cn/index.php/guide/idea-regex-replace-skill.html
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
如有版权疑问交流,请给我留言:oneisall8955@gmail.com
本文永久链接:https://liuzhicong.cn/index.php/guide/idea-regex-replace-skill.html
如果仅仅是想实现这种效果Excel中Ctrl+E也可达到
Excel也能这样操作?涨姿势了。近期发现,这种类似小需求,idea的列编辑也很快速达到