suneel kumar gupta Ответов: 2

Написать SQL-функцию для проверки электронной почты, мобильного нет, поддона нет, GSTIN нет, HSN_CODE с помощью регулярных выражений.


Я хочу написать SQL-функцию для проверки электронной почты, MobileNO и PAN card... используя регулярное выражение в SQL, прежде чем обновлять данные в таблице,


Я попробовал ниже код, но он не работает в SQL Server 2008 R2

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

СОЗДАЙТЕ ФУНКЦИЮ [ВЫСТАВЛЕНИЕ СЧЕТОВ].[RegExMatch]
(
@Value varchar(50),
@ValidationType varchar(50)
)
ВОЗВРАЩАЕТ VARCHAR(50)
АС
НАЧАТЬ
Объявить @Result bit=0,@Regx varchar(200)
IF(@ValidationType='EMAIL')
НАЧАТЬ
Набор @Regx='[а-Яа-команды Z0-9_\-]+@([а-Яа-З0-9_\-]+\.)+(ком|орг|образование|НЗ|АУ)'
IF (dbo.RegExMatch(@Value,@Regx)=1)
НАЧАТЬ
SET @Result=1
КОНЕЦ
ЕЩЕ
НАЧАТЬ
SET @Result=0
КОНЕЦ
КОНЕЦ

возвращаемый результат;

КОНЕЦ

OriginalGriff

"Это не работает" - одно из самых бесполезных описаний проблемы, которое мы получаем: оно абсолютно ничего не говорит нам о проблеме. Мы не знаем, получаете ли вы сообщение об ошибке, или неправильные данные, или даже что этот код успешно компилируется!
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
Итак, расскажите нам, что происходит, когда вы запускаете этот код, что вы ожидали, как вы проверили, что произошло. Помогите нам помочь вам!
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

2 Ответов

Рейтинг:
2

MadMyche

Почему вы хотите сделать проверку так поздно в игре?

На мой взгляд, лучшее, что может сделать база данных, - это хранить данные, а лучшее место для их проверки-это приложение.

На мой взгляд, лучшее место для начала процесса проверки-это передний конец, когда конечный пользователь впервые вводит его.
Если вы используете веб-страницу, это может быть проверка javascript(jquery), которая позволит конечному пользователю узнать, что произошла ошибка, прежде чем он нажмет кнопку Отправить.
Как только они отправят заявку, повторите проверку на уровне приложения. Если есть ошибка, вы можете просто вернуть веб-страницу со списком ошибок для пользователя.
О единственной проверке, которую я бы сделал на уровне БД, - это убедиться, что записи не являются нулевыми.

Еще одно преимущество всего этого заключается в том, что отправка информации об ошибке обратно конечному пользователю занимает меньше шагов. На уровне "формы входа" это происходит немедленно. На прикладном уровне это как минимум одна операция. На уровне БД это еще как минимум 2 уровня.

Еще одним преимуществом является то, что существуют API-интерфейсы и сервисы для проверки/верификации этих элементов.
Электронные письма можно легко проверить в сетевом приложении с помощью system.net.mail.

Кто-то предложил добавить функцию CLR в вашу БД. Это будет чистый проект сам по себе и будет делать почти то же самое, как если бы вы делали это на уровне приложения. Хотя это возможно, это потребует от вас наличия разрешений на добавление CLR на ваш сервер.


Рейтинг:
1

CHill60

SQL Server 2008 R2 не предоставляет функции регулярных выражений напрямую. Если Функция patindex[^] не соответствует вашей задаче, вы могли бы использовать функцию CLR - см. ответы на эта должность[^].
Если это то, что вы думаете, что делаете, то проверьте, правильно ли вы его настроили - например, включены ли функции Ole Automation - более подробная информация находится по этой ссылке