Мне нужно проверить, если значение столбца (строка) в таблице сервера SQL начинается с маленькой буквы и может содержать только «_», «-», цифры и алфавиты. Я знаю, что могу использовать функцию CLR SQL-сервера для этого. Тем не менее, я пытаюсь реализовать эту проверку с использованием скалярной UDF и могу сделать очень мало здесь ... Я могу использовать «НЕ НРАВИТСЯ», но я не уверен, как убедиться, что я проверяю строку независимо от порядка символов или другими словами, напишите шаблон в SQL для этого. Мне лучше использовать функцию SQL CLR?
Любая помощь будет оценена ..
Заранее спасибо
Спасибо всем за комментарии. Этим утром я выбрал путь функции CLR. В целях того, чего я пытался достичь, я создал одну функцию CLR, которая выполняет проверку входной строки и вызывает ее из SQL UDF, и она работает хорошо.
Просто чтобы измерить производительность t-SQL UDF с помощью функции SQL CLR против t-SQL UDF, я создал функцию SQL CLR, которая будет просто проверять, содержит ли входная строка только маленькие буквы, она должна возвращать true, иначе false и иметь который вызывается из UDF (IsLowerCaseCLR). После этого я также создал обычный UDF t-SQL (IsLowerCaseTSQL), который делает то же самое, используя NOT LIKE.
Затем я создал таблицу (Person) со столбцами Name (varchar) и IsValid (bit) и заполнил ее именами для проверки.
Данные: -
1000 записей с 'Ashish' в качестве значения для столбца Name
1000 записей со значением «ashish» в качестве значения для столбца «Имя»
тогда я запустил следующее: -
ОБНОВЛЕНИЕ Person Set IsValid = 1 ГДЕ dbo.IsLowerCaseTSQL (Имя)
Выше обновленные 1000 записей (с Isvalid = 1) и заняли меньше секунды.
Я удалил все данные в таблице и снова заполнил их теми же данными. Затем обновил ту же таблицу с помощью Sql CLR UDF (с Isvalid = 1) и это заняло 3 секунды!
Если обновление происходит для 5000 записей, обычный UDF занимает 0 секунд по сравнению с CLR UDF, который занимает 16 секунд!
Я очень плохо разбираюсь в регулярных выражениях t-SQL, или я мог бы проверить свои более сложные критерии проверки. Но я просто хотел знать, даже если бы мог написать это, было бы это быстрее, чем функция SQL CLR, учитывая приведенный выше пример.
Используем ли мы SQL CLR, потому что мы можем реализовать, мы можем реализовать гораздо более богатую логику, что было бы иначе, если бы мы писали на обычном SQL.
Извините за этот длинный пост. Я просто хочу узнать от экспертов. Пожалуйста, не стесняйтесь спрашивать, если вы не могли ничего понять здесь.
Еще раз спасибо за ваше время.