TSQL筛选包含无效字符的行

33qvvth1  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(159)

我有一个表,其中应该是Active Directory用户的列表。在许多情况下,他们的名称中包含无效字符
我需要有一个查询,它将只选择那些用户名不包含
这些字符中的任何一个。

"\/[]:;|=,+*?<>

类似于
select username from userlist where username not like regex
我看到我如何可以很容易地过滤其中之一,但不知道如何寻找其中任何一个。

62lalag4

62lalag41#

类似于:

WHERE MyColumn LIKE '%["\/:;|=,+*?<>]%' 
   OR CHARINDEX('[', MyColumn) > 0
   OR CHARINDEX(']', MyColumn) > 0

应查找工作异常行

vkc1a9a2

vkc1a9a22#

您可以使用 * 转义字符 * 将所有这些内容合并到一个like中:

declare @Samples as Table ( Val NVarChar(32) );
insert into @Samples ( Val ) values
  ( '[' ), ( ']' ), ( '"' ),
  ( 'a\b/c:d;e|f=g,h+i*j?k<l>m' ),
  ( 'Vogon poetry.' );

-- Undesirable characters: "\/[]:;|=,+*?<>

select Val, case when Val like N'%["\/[↕]:;|=,+*?<>]%' escape N'↕' then 'Fail' else 'Pass' end as Status
  from @Samples;

dbfiddle

相关问题