问题描述
我不明白为什么 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 字符。