2015-12-11 4 views
0

У меня есть данные в столбце таблицы upn.Regex для получения данных со специальными символами

Вот небольшой набор примеров этих данных.

Pasquale.Rombolà@it.eurw.domain.net 
JuanMaria.RomanGonç[email protected] 
Santo.Paternò@it.eurw.domain.net 
[email protected] 
Franç[email protected] 
Frédé[email protected] 
Frédé[email protected] 
Laura.Piñ[email protected] 
Maria.AranzabalSaldañ[email protected] 
Alberto.RubioMuñ[email protected] 
Peter.Brü[email protected] 
[email protected] 

Я хочу запросить эту таблицу для значений UPN, где у меня есть специальные символы в UPN. Так что мой запрос не должен возвращать upns, такие как:

[email protected] 

и

[email protected] 

Но возвращает все остальное со специальными символами, такими как [à,ò,ñ,ü ...etc]

Я попробовал этот запрос, но он не работает ,

Select * from TableName 
Where [UPN] like %[a-z,0-9,@,\.,-,A-Z]% 

Он возвращает все, включая те, у которых нет специальных символов.

Пожалуйста, помогите.

ответ

0

Если я правильно понял, я думаю, вам просто нужно добавить «^» в качестве первого символа в квадратных скобках.

В настоящее время вы говорите, что хотите вернуть все те UPN, где один или несколько символов находятся в списке, который вы даете (т. Е. «Обычные» символы). «^» Следует отменить это и предоставить вам все UPN, где по крайней мере один из символов отсутствует в списке, который вы даете.

Update: После тестирования локально ... Убедитесь, что параметры сортировки «Акцент Sensitive» (если необходимо добавить «Latin1_General_CI_AS» или подобное после того, как ваш «как» пункт

Я нашел его только работал, если вместо ". AZ», я на самом деле напечатал весь алфавит.

0

Вам нужно добавить двоичный пункт СОРТ- в нем. Выберите необходимую сортировку в соответствии с вашими данными. для данных выборочных данных Latin1_General_BIN работы.
Вот в link для сортировки в sql server. Этот сниппет работал для меня на моей машине.

create table #t (name varchar(100)); 

insert into #t values 
('Pasquale.Rombolà@it.eurw.domain.net'), 
('JuanMaria.RomanGonç[email protected]'), 
('Santo.Paternò@it.eurw.domain.net'), 
('[email protected]'), 
('Franç[email protected]'), 
('Frédé[email protected]'), 
('Frédé[email protected]'), 
('Laura.Piñ[email protected]'), 
('Maria.AranzabalSaldañ[email protected]'), 
('Alberto.RubioMuñ[email protected]'), 
('Peter.Brü[email protected]'), 
('[email protected]'); 

select * from #t where name not like '%[^[email protected]]%' COLLATE Latin1_General_BIN; 

output-
[email protected]
[email protected]

+0

Я думаю, что он хочет, чтобы эти результаты исключены – Mihai

+0

Нам просто нужно вставить предложение. выберите * from #t, где имя типа '% [^ a-zA-Z0-9 @.]%' COLLATE Latin1_General_BIN; Я использовал предложение NOT, чтобы уменьшить количество строк в выводах для отправки в ответ :) – nil

Смежные вопросы