SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдо рдмрджрд▓реЗрдВ рдмрдирд╛рдо рд╕рд╛рдордЧреНрд░реА
рдЙрджрд╛рд╣рд░рдг
рдЕрдкрдиреЗ рдбреЛрдореЗрди рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ "https://" рдХреЛ рддреАрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред
рд╣рдордиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ;
- рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ
- рдмрджрд▓рдиреЗ рдХреЗ
- рд╕рд╛рдордЧреНрд░реА
- рдмрд╛рдПрдБ рджрд╛рдВрдП
- рдЪрд░рд┐рдиреНрджреЗрдХреНрд╕
- рдЙрд▓реНрдЯрд╛
- ISNULL/NULLIF
SQL
DECLARE @e NVARCHAR(MAX)='https://www.claytabase.co.uk'SELECT SUBSTRING(@e,9,100)SELECT REPLACE(@e,'https://','')SELECT STUFF(@e,1,8,'')--www.claytabase.co.uk--www.claytabase.co.uk--www.claytabase.co.uk
рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ
рдХрд┐рд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рднрд╛рдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SUBSTRING рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рддреЛ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╢реБрд░реБрдЖрддреА рд╕реНрдерд┐рддрд┐ 9 рд╣реЛред рд▓рдВрдмреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдХреА рдЫреЛрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдкреНрд░рд╛рд░рдВрдн, рд▓рдВрдмрд╛рдИ)
рдмрд╛рдПрдБ рджрд╛рдВрдП
рдмрджрд▓рдиреЗ рдХреЗ
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рднреАрддрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП REPLACE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрдм рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдШрдЯрдирд╛ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ STUFF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
REPLACE(string_expression, string_pattern, string_replacement)
рд╕рд╛рдордЧреНрд░реА
рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рджреВрд╕рд░реЗ рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП STUFF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЙрди рд╡рд░реНрдгреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
STUFF(character_expression, start, length, replace_expression)
рд╕реНрдерд┐рддрд┐ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП CHARINDEX рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЬрд╛рдиреЗрдВрдЧреЗ рдЬрд┐рд╕реЗ рдЖрдк рд╣рд░ рд╕рдордп рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдорддреМрд░ рдкрд░ рд╕реНрдерд┐рддрд┐ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП CHARINDEX рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рд╣рдордиреЗ рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрд╕реАрдорд┐рдд рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
CHARINDEX рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд╕рд╣реА рдкреНрд░рджрд░реНрд╢рди рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕реЗ 1 рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдШрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред
SQL
DECLARE @e NVARCHAR(MAX)='https://www.claytabase.co.uk'SELECT CHARINDEX('.',@e,1),SUBSTRING(@e,CHARINDEX('.',@e,1)+1,100)SELECT CHARINDEX('.',@e,CHARINDEX('.',@e,1)+1),SUBSTRING(@e,CHARINDEX('.',@e,CHARINDEX('.',@e,1)+1)+1,100)SELECT CHARINDEX('.',REVERSE(@e),1),RIGHT(@e,CHARINDEX('.',REVERSE(@e),1)-1)--12,claytabase.co.uk--23,co.uk--3,uk
рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛
рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде 1 рдХреЗ рдЬреЛрдбрд╝ рдпрд╛ рдШрдЯрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╡рд┐рдлрд▓рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдордиреЗ -1 рд╕реЗ NULL рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреЛрдб рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ 0 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
Workaround
DECLARE @e NVARCHAR(MAX)='https://www.claytabase.co.uk'SELECT CHARINDEX('x',REVERSE(@e),1),NULLIF(RIGHT(@e,CHARINDEX('x',REVERSE(@e),1)),-1)
рд╡рд┐рднрд┐рдиреНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рд╕рдВрдпреЛрдЬрди
рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдиреАрдЪреЗ рдПрдХ URL рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рд╣реИред
рдпрджрд┐ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВ рддреЛ рдпреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдбреЛрдореЗрди, рдкреЗрдЬ рдФрд░ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрдВрдЧреЗред
Complex SQL
DECLARE @e NVARCHAR(MAX)='https://www.claytabase.co.uk/Business-Solutions/Database-Consultancy-Services/Technical-Articles/SQL-Server-Data/Substring-vs-Replace-vs-Stuff?qrystr=claytabase'SELECT CHARINDEX('//',@e,1),LEFT(@e,CHARINDEX('//',@e,1)+1)--Protocol add 1 to pull through complete valueSELECT CHARINDEX('//',@e,1),CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2),SUBSTRING(@e,CHARINDEX('//',@e,1)+2,CHARINDEX('/',@e,10)-LEN(LEFT(@e,CHARINDEX('//',@e,1)+2)))--CHARINDEX needs adjusting to remove protocol lengthSELECT CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2),ISNULL(NULLIF(CHARINDEX('?',@e,1)-1,-1),LEN(@e)),SUBSTRING(@e,CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2)+1,ISNULL(NULLIF(CHARINDEX('?',@e,1)-1,-1),LEN(@e))-CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2))SELECT CHARINDEX('?',REVERSE(@e),1),RIGHT(@e,ISNULL(NULLIF(CHARINDEX('?',REVERSE(@e),1)-1,-1),0))--7,https://--7,29,www.claytabase.co.uk--29,123,Database-Consultancy-Services/Technical-Articles/SQL-Server-Data/Substring-vs-Replace-vs-Stuff--18,qrystr=claytabaseSET @e='http://www.claytabase.co.uk/'SELECT CHARINDEX('//',@e,1),LEFT(@e,CHARINDEX('//',@e,1)+1)--Protocol add 1 to pull through complete valueSELECT CHARINDEX('//',@e,1),CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2),SUBSTRING(@e,CHARINDEX('//',@e,1)+2,CHARINDEX('/',@e,10)-LEN(LEFT(@e,CHARINDEX('//',@e,1)+2)))--Domain needs adjusting to remove protocolSELECT CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2),ISNULL(NULLIF(CHARINDEX('?',@e,1)-1,-1),LEN(@e)),SUBSTRING(@e,CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2)+1,ISNULL(NULLIF(CHARINDEX('?',@e,1)-1,-1),LEN(@e))-CHARINDEX('/',@e,CHARINDEX('//',@e,1)+2))SELECT CHARINDEX('?',REVERSE(@e),1),RIGHT(@e,ISNULL(NULLIF(CHARINDEX('?',REVERSE(@e),1)-1,-1),0))--6,http://--6,28,www.claytabase.co.uk--28,28,--0,