SQL Server 2016 How to use a simple Regular Expression in T-SQL?

前端 未结 2 680
粉色の甜心
粉色の甜心 2021-01-29 00:12

I have a column with the name of a person in the following format: \"LAST NAME, FIRST NAME\"

  • Only Upper Cases Allowed
  • Space after comma optional
2条回答
  •  孤街浪徒
    2021-01-29 01:06

    The tsql equivalent could look like this. I'm not vouching for the efficiency of this solution.

    declare @table as table(name varchar(20), is_Correct_format varchar(5))
    insert into @table(name) Values
    ('Smith, Jon')
    ,('se7en, six')
    ,('Billy bob')
    
    
    UPDATE @table 
    SET is_correct_format = 'YES'
    WHERE
    replace(name, ', ', ',x')
         like (replicate('[a-z]', charindex(',', name) - 1)
             + ','
             + replicate('[a-z]', len(name) - charindex(',', name)) )
    
    
    select * from @table
    

    The optional space is hard to solve, so since it's next to a legal character I'm just replacing with another legal character when it's there.

    TSQL does not provide the kind of 'repeating pattern' of * or + in regex, so you have to count the characters and construct the pattern that many times in your search pattern.

    I split the string at the comma, counted the alphas before and after, and built a search pattern to match.

    Clunky, but doable.

提交回复
热议问题