Regex 正则表达式-更改为大小写/删除下划线

Regex 正则表达式-更改为大小写/删除下划线,regex,sql-server-2008-r2,notepad++,ssms,Regex,Sql Server 2008 R2,Notepad++,Ssms,我想将记事本/Sql Server management studio中的所有字符串转换为驼峰大小写,并删除所有下划线 例如: 我想删除字符串a中的下划线,并转换成驼峰大小写,如字符串b所示。请帮帮我。假设您的数据已经在表中,它是否必须使用reg ex?为什么不创建一个标量函数来执行此操作,并执行以下步骤: 更新tableName SET stringa=REPLACE(stringa,“”,“”)——用空格替换下划线 更新tableName SET stringa=dbo.ProperCase

我想将记事本/Sql Server management studio中的所有字符串转换为驼峰大小写,并删除所有下划线

例如:


我想删除字符串a中的下划线,并转换成驼峰大小写,如字符串b所示。请帮帮我。

假设您的数据已经在表中,它是否必须使用reg ex?为什么不创建一个标量函数来执行此操作,并执行以下步骤:

  • 更新tableName SET stringa=REPLACE(stringa,“”,“”)——用空格替换下划线
  • 更新tableName SET stringa=dbo.ProperCase(stringa)——使用我在下面创建的函数更新字段
  • 更新tableName SET stringa=REPLACE(stringa,,“”)——现在删除空格
  • 作用
    创建函数[dbo].[ProperCase]
    (
    @字符串VARCHAR(255)
    )
    将VARCHAR(255)返回为
    开始
    声明@i INT
    声明@Char(1)
    声明@CorChar(1)
    声明@prevacii INT
    声明@prevasci2 INT
    声明@Ret VARCHAR(255)
    /*字幕化规则*/
    --每个单词的首字母大写
    --将特殊字符后的下一个字母大写
    --例如joe o'bloggs-bloggs jr->joe o'bloggs-bloggs jr
    设置@Ret=''
    设置@i=1
    
    而@i只需在记事本++中执行一步即可:

    Find: ([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)\.php
    Replace: $1\U$2\L$3\U$4\L$5\U$6\L$7
    
    唯一的问题是,您需要知道欠分数出现的最长时间以及字符串的结束方式。
    在上面的示例中,我将php文件名替换为camelCase,因为我知道,分数不足的次数不能超过3次,少的次数是没有问题的。

    这不能用纯正则表达式完成,因此在记事本++中,如果没有脚本,就不能完成。如果要在Microsoft SQL server management studio中更改脚本,则需要回调函数来执行转换。它们提供了使用正则表达式替换的选项。无论使用何种工具,正则表达式引擎通常都不支持这种转换。如果您使用的是Perl,则可以使用/e修饰符执行一些代码来转换替换文本,但您没有该选项。请参阅此stackoverflow:[使用正则表达式将字符转换为大写(EditPad Pro)][1][1]:我使用Microsoft word解决了此问题。首先将字符串大写,然后将下划线(\)替换为空白()。我的问题解决了。非常感谢你的帮助。这真是个有魅力的人!在36个字段中,它处理了所有字段,除了最后一个下划线后面有数字的6!非常感谢。
    CREATE FUNCTION [dbo].[ProperCase]
    (
    @String VARCHAR(255)
    )
    
    RETURNS VARCHAR(255) AS
    
    BEGIN
    
    DECLARE @i INT
    DECLARE @Char CHAR(1)
    DECLARE @CorChar CHAR(1)
    DECLARE @PrevAscii INT
    DECLARE @PrevAscii2 INT
    DECLARE @Ret VARCHAR(255)
    
    
    /* Captalisation rules */
    
    -- Capitalise first letter of each word
    -- Capitalise next letter after special characters
    
    -- eg joe o'bloggs-bloggs jr -> Joe O'Bloggs-Bloggs Jr
    
    SET @Ret = ''
    SET @i = 1
    WHILE @i <= LEN(@String)
    
    BEGIN
       SET @Char = SUBSTRING(@String, @i, 1)
       SET @CorChar = CASE  WHEN @i = 1                                 THEN UPPER(@Char)-- First letter
                        WHEN @PrevAscii = 32                        THEN UPPER(@Char)-- Follows Space
                        WHEN @PrevAscii = 39 AND @PrevAscii2 =  79  THEN UPPER(@Char)-- Follows O'
                        WHEN @PrevAscii = 45                        THEN UPPER(@Char)-- Follows Dash
                        WHEN @PrevAscii = 46                        THEN UPPER(@Char)-- Follows Fullstop
                        ELSE LOWER(@Char)
                     END
       SET @Ret = @Ret + @CorChar
    
       SET @i = @i + 1
       SET @PrevAscii2 = @PrevAscii
       SET @PrevAscii = ASCII(@CorChar)
    END
    
    --Now sort out capitalistaion for van, de, den, and der
    
    SET @Ret = CASE WHEN @Ret LIKE 'Van %' THEN 'v' + SUBSTRING(@Ret,2,255) ELSE @Ret END
    SET @Ret = CASE WHEN @Ret LIKE 'De %' THEN 'd' + SUBSTRING(@Ret,2,255) ELSE @Ret END
    SET @Ret = CASE WHEN @Ret LIKE 'Der %' THEN 'd' + SUBSTRING(@Ret,2,255) ELSE @Ret END
    SET @Ret = CASE WHEN @Ret LIKE 'Den %' THEN 'd' + SUBSTRING(@Ret,2,255) ELSE @Ret END
    
    SET @Ret = REPLACE(@Ret,' De ',' de ')
    SET @Ret = REPLACE(@Ret,' Der ',' der ')
    SET @Ret = REPLACE(@Ret,' Den ',' den ')
    
    RETURN @Ret
    
    END
    
    Find: ([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)\.php
    Replace: $1\U$2\L$3\U$4\L$5\U$6\L$7