我在Windows上使用gvim并且有一个文件,其中有几行看起来像这样
Select '305','TableA
Select '313','TableB
Select '313','TableC
Run Code Online (Sandbox Code Playgroud)
我想在每行的末尾添加以下行.
', count(*) from [Tablename] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样(注意[TableName]被实际的表名替换.
Select '305','TableA', count(*) from TableA where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Select '313','TableB', count(*) from TableB where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Select '313','TableC', count(*) from TableC where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Run Code Online (Sandbox Code Playgroud)
我可以添加最后附加文本
%s/$/', count(*) from [Tablename] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')/g
Run Code Online (Sandbox Code Playgroud)
但我被困在如何读取表名并将其替换为[Tablename].
基本上我只是想生成几个查询.有任何想法吗?我知道表名将始终是从行尾到第一个'字符的文本,但我如何阅读它并将其添加到修改后的字符串?
谢谢
Sam*_*nck 10
你需要做一点反向引用.
将搜索词更改为:
\(\a\+\)$这将与表名匹配.围绕搜索项\(并\)允许在
替换字符串中将其引用到您想要显示表名的替换字符串中.
结果应该是这样的
%s/\(\a\+\)$/\1', count(*) from [\1] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')/g