Member 13419664 Ответов: 4

Пожалуйста, ответьте на следующий вопрос ASP


Нужен SQL-запрос для извлечения записей, содержащих символы, отличные от alpha, - (тире),. (точка) или, (запятая)

Что я уже пробовал:

Выберите * от PatientDB где имени, не как '%[А-я]%' или нет имени, как '%,%' или нет имени, как '%.%' Или нет имени, как '%-%'

Этот запрос извлекает только те записи, где есть FName(не '%[A-Z]% 'и не FName как'%, % ' и не FName как '%. % 'и не FName как'% -%). Но мне нужны записи, где FName содержит алфавиты вместе с цифрами и специальными символами, отличными от“ -“,“”.”

4 Ответов

Рейтинг:
2

Jochen Arndt

Это зависит от типа SQL-сервера.

С большинством из них что-то вроде этого должно сработать:

SELECT * from PatientDB WHERE FName LIKE '%[^a-zA-Z,.-]%'
Если ваш SQL-сервер поддерживает регулярные выражения, вы также можете использовать их (синтаксис исключенного диапазона символов аналогичен).


Рейтинг:
2

OriginalGriff

Используйте и вместо или.

Или требует, чтобы любое из положений с каждой стороны было истинным, и требует обоих.


Рейтинг:
2

Member 12068587

Можно сделать вот так и свою работу на SQL 2014

Выберите * из PatientDB, где FName like '% [ % ] % 'или FName like'%. % 'или FName like'%,%'


Рейтинг:
1

Member 11449311

Вам нужно ознакомиться с REGEX и PATINDEX

Используйте регулярное выражение с правильным регулярным выражением:
ГДЕ...
И аннотации REGEXP '[- A-Za - z ().]+'
И аннотации NOT_REGEXP '[A-Za-z]+'

Создать таблицу #TableA (id INT, columnA VARCHAR (200))
Вставить в #TableA
Выберите 1, " вот мой номер телефона 12345678. но мой сотовый 44444444.
Выберите 2,' 987654321-это мой баланс ' UNION ALL
Выберите 3: "Мне нравится номер 55555555. это круто ' союз всех
Выберите 4,'66666666'

Выберите id, MIN(PATINDEX(n, columnA)) Как pos
Из таблицы tablea
ПЕРЕКРЕСТНОЕ ПРИМЕНЕНИЕ
(
Выберите '%4444%' как N UNION ALL
Выберите " %123%".
)суб
Группа по идентификатору
Отбросьте таблицу #TableA