Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- String pattern replace a column
- SELECT REPLACE(
- REPLACE(YourColumn, '$[%]foo##amet[%]$', 'amet'), '$[%]bar##[%]$', '')
- SELECT REPLACE(REPLACE(YourColumn, ' $%amet%$ ', ' amet '), ' $%bar%$ ', ' ')
- CREATE FUNCTION [dbo].[ReplaceWithDefault]
- (
- @InputString VARCHAR(4000)
- )
- RETURNS VARCHAR(4000)
- AS
- BEGIN
- DECLARE @Pattern VARCHAR(100) SET @Pattern = '$[%]_%##%[%]$'
- -- working copy of the string
- DECLARE @Result VARCHAR(4000) SET @Result = @InputString
- -- current match of the pattern
- DECLARE @CurMatch VARCHAR(500) SET @curMatch = ''
- -- string to replace the current match
- DECLARE @Replace VARCHAR(500) SET @Replace = ''
- -- start + end of the current match
- DECLARE @Start INT
- DECLARE @End INT
- -- length of current match
- DECLARE @CurLen INT
- -- Length of the total string -- 8001 if @InputString is NULL
- DECLARE @Len INT SET @Len = COALESCE(LEN(@InputString), 8001)
- WHILE (PATINDEX('%' + @Pattern + '%', @Result) != 0)
- BEGIN
- SET @Replace = ''
- SET @Start = PATINDEX('%' + @Pattern + '%', @Result)
- SET @CurMatch = SUBSTRING(@Result, @Start, @Len)
- SET @End = PATINDEX('%[%]$%', @CurMatch) + 2
- SET @CurMatch = SUBSTRING(@CurMatch, 0, @End)
- SET @CurLen = LEN(@CurMatch)
- SET @Replace = REPLACE(RIGHT(@CurMatch, @CurLen - (PATINDEX('%##%', @CurMatch)+1)), '%$', '')
- SET @Result = REPLACE(@Result, @CurMatch, @Replace)
- END
- RETURN(@Result)
- END
Add Comment
Please, Sign In to add comment