Hi,I’, getting the above error when I run the below code
WHEN PATINDEX('/courses/%/pages/%', url) >= 1 AND PATINDEX('%?%', url) >= 1
THEN SUBSTRING(LEFT(url,CHARINDEX('?',url)), CHARINDEX('/pages/',url,0)+7,(CHARINDEX('/', REVERSE(url), 1)-CHARINDEX('?', REVERSE(url), 1))-1)
WHEN PATINDEX('/courses/%/pages/%', url) >= 1 AND PATINDEX('%?%', url) = 0
THEN SUBSTRING(url, CHARINDEX('/pages/',url,0)+7,1000)
WHEN PATINDEX('/courses/%/pages', url) >= 1
THEN 'pages-list'
ELSE ''
END AS wiki_url
It looks like some of your input data is causing the problem.
To find out what it is, you may need to change your code to some debug code such as using print statements to see values.
Try something like this:
WHEN PATINDEX('/courses/%/pages/%', url) >= 1 AND PATINDEX('%?%', url) >= 1
--SUBSTRING(LEFT(url,CHARINDEX('?',url)), CHARINDEX('/pages/',url,0)+7,(CHARINDEX('/', REVERSE(url), 1)-CHARINDEX('?', REVERSE(url), 1))-1)
begin
print '---'
print url
print LEFT(url,CHARINDEX('?',url))
print CHARINDEX('/pages/',url,0)+7
print (CHARINDEX('/', REVERSE(url), 1)-CHARINDEX('?', REVERSE(url), 1))-1
print '---'
WHEN PATINDEX('/courses/%/pages/%', url) >= 1 AND PATINDEX('%?%', url) = 0
--SUBSTRING(url, CHARINDEX('/pages/',url,0)+7,1000)
begin
print '==='
print url
print CHARINDEX('/pages/',url,0)+7
print '==='
WHEN PATINDEX('/courses/%/pages', url) >= 1
THEN 'pages-list'
ELSE ''
END AS wiki_url
Looks like it blows up when /courses/%/pages/% comes before the first ‘?’ ?
WHEN PATINDEX('/courses/%/pages/%', @url) >= 1 AND PATINDEX('%?%', @url) < PATINDEX('/courses/%/pages/%', @url)
SUBSTRING(LEFT(@url,CHARINDEX('?',@url)), CHARINDEX('/pages/',@url,0)+7
,(CHARINDEX('/', REVERSE(@url), 1)
-CHARINDEX('?', REVERSE(@url), 1))-1)
WHEN PATINDEX('/courses/%/pages/%', @url) >= 1 AND PATINDEX('%?%', @url) > PATINDEX('/courses/%/pages/%', @url)
'something else'
WHEN PATINDEX('/courses/%/pages/%', @url) >= 1 AND PATINDEX('%?%', @url) = 0
THEN SUBSTRING(@url, CHARINDEX('/pages/',@url,0)+7,1000)
WHEN PATINDEX('/courses/%/pages', @url) >= 1
THEN 'pages-list'
ELSE ''
END AS wiki_url