我正在尝试使用网址
过滤掉列中的“非法”字符我试过
select seourl from products where seourl like '%[^0-9a-z&;/_.?,!%-]%';
但我有很多看似好的网址被选为非法网站。 所以我尝试了这个以获得更多的调试信息:
declare @p nvarchar(40)='%[^0-9a-z&;/_.?,!%-]%';
select substring(seourl,patindex(@p,seourl),2) s,
patindex(@p,seourl) n,
seourl from products where
seourl like @p
它显示我对包含'aa'的字符串进行了点击,如下所示:
AA 1 AA_Batteri__-_Mignon__1,5_v/1_stk
aa 2 Haarboerste
可能是因为整理是Danish_Norwegian_CI_AS,其中aa是像å,& aring那样的alfabetiti; ?
答案 0 :(得分:1)
肯定是。
通过改变整理,我不再得到误报:
declare @p nvarchar(40)='%[^0-9a-z&;/_.?,!%-]%';
select seourl from t_produkter where
CAST(seourl COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(255)) like @p