像操作员不起作用

时间:2015-10-27 17:58:33

标签: sql sql-server-2014 sql-like

我在SQL Server 2014 Enterprise中有以下代码:

SELECT c.Id
FROM dbo.Content c 
WHERE c.Id = 8753495 AND c.Content LIKE '%Paypal%'

此代码用于了解内容是否与单词Paypal匹配并返回0结果,对于该ID,我知道它在内容中包含单词“Paypal”。

我尝试过不同的内容,并且有些词语正在运作,而其他人则没有。

数据库和Content表都使用SQL_Latin1_General_CP1_CI_AS归类。

任何人都可以帮助我吗?

编辑: 这个查询的目的是做其他事情,不仅返回id,而且我在like运算符上发现了问题,所以我给你的部分失败了

还尝试使用上/下但仍无法正常工作

这是创建脚本。

CREATE TABLE [dbo].[Content](
    [Id] [int] NOT NULL,
    [Content] [nvarchar](max) NULL,
 CONSTRAINT [PK_Content_1] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

感谢您的回复。

编辑2: Like operation returns no rows on nvarchar column filter if the column data start with numeric没有回答这个问题。 模式的末尾有一个空格。

这里的问题是一个恶意客户端,它使字符看起来很相似,这样可以避免验证并发送垃圾邮件

例如,Unicode 1056十进制(420 hexa)是一个类似于拉丁语P(Ascii 80)的希腊字符

enter image description here

1 个答案:

答案 0 :(得分:0)

好吧,我发现了错误。

内容是由客户端(垃圾邮件发送者)上传的,当查看每个字符的ascii时,我发现客户端将内容放在类似的unicode字符上。

所以" Paypal"没有" Paypal"像预期的那样,这里是Paypal字的结果与预期结果的比较: Unicode result