为什么 CHARINDEX 返回 0?

问题描述

我不明白为什么 CHARINDEX 为以下查询一直返回 0:

DECLARE @__text_0 nvarchar(max) = 'Ay,while you live,draw your neck out o'' the collar. Blah,Blah,Blah.';

SELECT [p].[PlainText]
FROM Shakespeare_Works.dbo.Paragraphs AS [p]
WHERE (CHARINDEX([p].[PlainText],@__text_0) > 0)

段落的纯文本单元格之一包含:

是的,活着的时候把脖子从衣领上拉出来

PlainText 是 nvarchar(max)。

可能出了什么问题?

谢谢!

解决方法

我刚刚测试了你的代码,在我的例子中返回的 charindex 等于 1。 更重要的是,您的查询似乎有效,至少对于插入到表参数的值,如下例所示。

DECLARE @__text_0 NVARCHAR(MAX)= 'Ay,while you live,draw your neck out o'' the collar. Blah,Blah,Blah.';
DECLARE @Paragraphs TABLE(PlainText NVARCHAR(MAX));

INSERT INTO @Paragraphs
VALUES('Ay,draw your neck out o'' the collar');

SELECT [p].[PlainText]
FROM @Paragraphs AS [p]
WHERE(CHARINDEX([p].[PlainText],@__text_0) > 0);

SELECT CHARINDEX('Ay,draw your neck out o'' the collar',@__text_0) AS Charindx;

请再试一次,我想到的唯一可能会导致问题的是“领子外的脖子”附近的撇号标志。

,

我调查了单元格中包含的数据的 ASCII 码,结果显示每个单元格的末尾是一个 0A ASCII 字符。