添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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