zoukankan      html  css  js  c++  java
  • SQL Server Management Studio 一些正则小技巧

    在开发过程中,有时会需要对数据库表进行增改操作,有些表的字段比较多,手写或者用SQL Server Management Studio直接生成脚本,也还需要对脚本进行大量的手工修改才能使用,于是,就想到能否用正则表达式替换字符的方式,来修改脚本,结果发现SQL Server Management Studio用的是特有的正则规则,使用还蛮简单的。

     下面举一个例子:

            生成表的Update脚本:

    生成后的sql脚本如下:

    UPDATE [FilterTasks]
       SET [ID] = <ID, varchar(36),>
          ,[ItemStatusForFilter] = <ItemStatusForFilter, varchar(20),>
          ,[SellerCidsForFilter] = <SellerCidsForFilter, varchar(255),>
          ,[MinQuantity] = <MinQuantity, int,>
          ,[MaxQuantity] = <MaxQuantity, int,>
          ,[CreateTime] = <CreateTime, datetime,>
          ,[FinishTime] = <FinishTime, datetime,>
          ,[FilterStatus] = <FilterStatus, varchar(20),>
          ,[FilterResult] = <FilterResult, bit,>
          ,[ErrorMessage] = <ErrorMessage, nvarchar(500),>
          ,[SumOfItems] = <SumOfItems, int,>
          ,[SuccessOfItems] = <SuccessOfItems, int,>
          ,[FailedOfItems] = <FailedOfItems, int,>
          ,[SellerNick] = <SellerNick, nvarchar(50),>
     WHERE <搜索条件,,>
    GO

    这段代码是无法直接放到代码中使用的,需要进行修改,

    1、ctrl + h,打开查找替换窗口,

    2、查找内容:[,替换为:空格。

    3、查找内容:],替换为:空格。

    4、查找内容:<,替换为:@。

    执行完上面四个步骤后,得出结果:

    UPDATE FilterTasks
       SET ID = @ID, varchar(36),>
          ,ItemStatusForFilter = @ItemStatusForFilter, varchar(20),>
          ,SellerCidsForFilter = @SellerCidsForFilter, varchar(255),>
          ,MinQuantity = @MinQuantity, int,>
          ,MaxQuantity = @MaxQuantity, int,>
          ,CreateTime = @CreateTime, datetime,>
          ,FinishTime = @FinishTime, datetime,>
          ,FilterStatus = @FilterStatus, varchar(20),>
          ,FilterResult = @FilterResult, bit,>
          ,ErrorMessage = @ErrorMessage, nvarchar(500),>
          ,SumOfItems = @SumOfItems, int,>
          ,SuccessOfItems = @SuccessOfItems, int,>
          ,FailedOfItems = @FailedOfItems, int,>
          ,SellerNick = @SellerNick, nvarchar(50),>
     WHERE @搜索条件,,>
    GO

    下面需要替换的是  , varchar(36),>  |  , varchar(20),> |  , int,> 等内容,需要用到正则表达式

    1、ctrl + h,打开查找替换窗口。

    2、在查找替换窗口下面的【查找选项】中勾选 【使用(E)】:正则表达式。

    3、查找内容:,:b:i*((:z*))*,>    替换内容:空格。(:b 匹配空格或制表符;:i 匹配表达式 ([a-zA-Z_$][a-zA-Z0-9_$]*);:z 匹配表达式 ([0-9]+))

    执行后得出结果:

    UPDATE FilterTasks
       SET ID = @ID
          ,ItemStatusForFilter = @ItemStatusForFilter
          ,SellerCidsForFilter = @SellerCidsForFilter
          ,MinQuantity = @MinQuantity
          ,MaxQuantity = @MaxQuantity
          ,CreateTime = @CreateTime
          ,FinishTime = @FinishTime
          ,FilterStatus = @FilterStatus
          ,FilterResult = @FilterResult
          ,ErrorMessage = @ErrorMessage
          ,SumOfItems = @SumOfItems
          ,SuccessOfItems = @SuccessOfItems
          ,FailedOfItems = @FailedOfItems
          ,SellerNick = @SellerNick
     WHERE @搜索条件,,>
    GO

    这个结果基本可以直接使用了,如果不想那么多换行,可以再用以下的正则表达式替换一下,去掉换行

    1、ctrl + h,打开查找替换窗口。

    2、在查找替换窗口下面的【查找选项】中勾选 【使用(E)】:正则表达式。

    3、查找内容: :b*,    替换内容:,(:b 匹配空格或制表符)

    执行后得到以下结果:

    UPDATE FilterTasks
       SET ID = @ID,ItemStatusForFilter = @ItemStatusForFilter,SellerCidsForFilter = @SellerCidsForFilter,MinQuantity = @MinQuantity,MaxQuantity = @MaxQuantity,CreateTime = @CreateTime,FinishTime = @FinishTime,FilterStatus = @FilterStatus,FilterResult = @FilterResult,ErrorMessage = @ErrorMessage,SumOfItems = @SumOfItems,SuccessOfItems = @SuccessOfItems,FailedOfItems = @FailedOfItems,SellerNick = @SellerNick
     WHERE @搜索条件,,>
    GO

    这个基本上直接复制到程序中就可以使用了。

    insert 语句可以参考上面的正则表达式去实现。

    学会SQL Server Management Studio的正则表达式查找替换技巧还是很有用的,经常需要编辑生成脚本,可以减少大量的手工操作

    参考资料:https://docs.microsoft.com/zh-cn/sql/ssms/scripting/search-text-with-regular-expressions?f1url=%3FappId%3DDev10IDEF1%26l%3DZH-CN%26k%3Dk(VS.REGULAREXPRESSIONBUILDER)%26rd%3Dtrue&view=sql-server-ver15

  • 相关阅读:
    单例模式
    说说抽象类接口
    闲说多态
    理解C#中的继承
    可变个数的形参的方法
    java 关键字
    数组的常见异常
    内存的基本结构 图片
    Java中的名称命名规范:
    死锁的例子 代码练习
  • 原文地址:https://www.cnblogs.com/lucky-donkey/p/13881812.html
Copyright © 2011-2022 走看看