Like 运算符不起作用
Like Operator does not work
我在 SQL Server 2014 Enterprise 中有以下代码:
SELECT c.Id
FROM dbo.Content c
WHERE c.Id = 8753495 AND c.Content LIKE '%Paypal%'
此代码用于了解内容是否与 Paypal 一词匹配,并且 return 获得 0 个结果,对于该 ID,我知道内容中包含 "Paypal".
我尝试过使用不同的内容词,有些词有效,有些词无效。
数据库以及 Content
table 都使用 SQL_Latin1_General_CP1_CI_AS
排序规则。
谁能帮帮我?
编辑:
此查询的目的是做其他事情,不仅是 return id,而且我在 like 运算符上发现了问题,所以我给你失败的部分
也试过 upper/lower 但还是不行
这是创建脚本。
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 没有回答这个问题。
模式末尾有一个space。
这里的问题是恶意客户端放置了看起来相似的字符,这种方式可以避免验证并可能发送垃圾邮件
例如,Unicode 1056 十进制(420 hex)是类似于拉丁 P(Ascii 80)的希腊字符
嗯,我发现错误了。
内容是由客户端(垃圾邮件发送者)上传的,当查看每个字符的ascii时,我发现客户端将内容放在相似的unicode字符上。
所以 "Paypal" 并不像预期的那样 "Paypal",这里是 Paypal word 的结果与预期结果的比较:
我在 SQL Server 2014 Enterprise 中有以下代码:
SELECT c.Id
FROM dbo.Content c
WHERE c.Id = 8753495 AND c.Content LIKE '%Paypal%'
此代码用于了解内容是否与 Paypal 一词匹配,并且 return 获得 0 个结果,对于该 ID,我知道内容中包含 "Paypal".
我尝试过使用不同的内容词,有些词有效,有些词无效。
数据库以及 Content
table 都使用 SQL_Latin1_General_CP1_CI_AS
排序规则。
谁能帮帮我?
编辑: 此查询的目的是做其他事情,不仅是 return id,而且我在 like 运算符上发现了问题,所以我给你失败的部分
也试过 upper/lower 但还是不行
这是创建脚本。
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 没有回答这个问题。 模式末尾有一个space。
这里的问题是恶意客户端放置了看起来相似的字符,这种方式可以避免验证并可能发送垃圾邮件
例如,Unicode 1056 十进制(420 hex)是类似于拉丁 P(Ascii 80)的希腊字符
嗯,我发现错误了。
内容是由客户端(垃圾邮件发送者)上传的,当查看每个字符的ascii时,我发现客户端将内容放在相似的unicode字符上。
所以 "Paypal" 并不像预期的那样 "Paypal",这里是 Paypal word 的结果与预期结果的比较: