2013-11-28 3 views
0

У меня есть следующий запрос:SQL Server: CHARINDEX возвращение неправильного индекса

SELECT 
    substring(Content, charindex(N'<img src=''http://tex.', Content), 
         charindex(N'class=''latex-formula''>', Content)+22) as Img 
FROM 
    [Scyk].[dbo].[Posts] 
WHERE 
    content LIKE '%<img src=''http://tex.%' 

Теперь я бы ожидать, что это даст мне все <img> тегов, которые у меня есть в базе данных. Но вместо этого, она возвращает что-то вроде этого:

<img src='http://tex.z-dn.net/?f=x%3Dlog_%7B%5Csqrt%7B2%7D%7D64' id='TexFormula' onerror="texError(this)" title='x=log_{\sqrt{2}}64' alt='x=log_{\sqrt{2}}64' align='absmiddle' class='latex-formula'> to:</p><p>a) 

Где конец строки заканчивается случайным образом, он может быть несколько символов слишком много, или это может быть много символов слишком много. Что не так в моем запросе?

ответ

2

Я думаю, что третий аргумент substring() - это длина раздела, который вы хотите извлечь, а не индекс конца. вам нужно будет вычесть первый charindex из второго, чтобы получить длину.

+0

Ох. Я думаю, что ты прав, пойдешь проверить это сразу, спасибо! – ojek

+0

Да, вот и все, ответит как можно скорее. Еще раз спасибо! – ojek

+0

Отлично. Рад, что смог помочь. – Snorre

0

Третий аргумент - это длина, а не индекс.

Смежные вопросы