为什么 CHARINDEX 返回 0?

Why is CHARINDEX returning 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。 更重要的是,您的查询似乎有效,至少对于插入到 table 参数的值,如下例所示。

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, while you live, draw your neck out o'' the collar');

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

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

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

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