2010-02-19 257 views
3

我有以下查询:SQL服务器 - 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 2010-02-19 10:01:33

+2

ntext已被弃用,您需要开始将这些字段转换为nvarchar(最大) – HLGEM 2010-02-19 21:02:46

回答

10

你得到的参数为CHARINDEX错误的方法。

+0

:-D哦,sheesh,我真的需要这个.......有些日子,您只需要另一组眼睛,即使间接和相隔几年 – 2017-11-15 23:37:09

6

你交换parameters

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

尝试:

CHARINDEX(N'StatusChange', CAST([Action] AS NVARCHAR(4000)))