2010-02-19 4 views
3

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

SELECT 
    CAST([Action] AS NVARCHAR(4000)) AS CastAction, 
    CHARINDEX(CAST([Action] AS NVARCHAR(4000)), N'StatusChange') AS FoundIndex 
FROM AuditTrail 
WHERE action LIKE '%StatusChange%' 

Действие является NTEXT поле - этот запрос возвращает количество строк, соответствующие StatusChange в тексте действия, но CHARINDEX возвращается всегда равна нулю. .. Любые идеи - мне нужно разбить эту строку, чтобы убрать некоторые данные?

+0

Ах, только что заметил намеренную ошибку ... У меня есть свои аргументы навыворот в функции CHARINDEX ... – Paddy

+2

ntext устарел, вам нужно начать преобразовывать эти поля в nvarchar (max) – HLGEM

ответ

10

У вас есть параметры CHARINDEX неправильный путь.

+0

:-D ой, sheesh, мне это действительно нужно ....... несколько дней вам просто нужен другой набор глаз, даже если косвенно и несколько лет друг от друга –

6

Вы обменивать parameters:

Searches expression2 for expression1 and returns its starting position if found. 

Try:

CHARINDEX(N'StatusChange', CAST([Action] AS NVARCHAR(4000))) 
Смежные вопросы