Не могли бы вы объяснить вывод этой функции
Создайте функцию [dbo].[udf_GenerateWhereQuery]
(@логики типа char(10), @поля типа varchar(250),@оператор типа varchar(100), @значение имеет тип nvarchar(Макс), @тип данных varchar(100) ,@параметр rownum инт)
ВОЗВРАЩАЕТ NVARCHAR(МАКС.)
АС
НАЧАТЬ
Объявите @WhereQuery NVarchar (MAX),@SQLOperator NVARCHAR(MAX)
SET @SQLOperator = CASE
Когда @тип = "строка"
ТОГДА ДЕЛО
Когда @Operator = 'startswith'
Тогда @поле + " как " + 'Н"' + параметре @value + '%' + ""
Когда @Operator = 'endswith'
Тогда @Field + 'LIKE' + 'N" ' + ' % ' + @Value +""
Когда @Operator = 'eq'
Тогда @Field + ' = ' + 'N" ' + @Value + ""
Когда @Operator = 'neq'
Тогда функция isnull(' + @поле + ',"")' + '&ЛТ;&ГТ;' + 'Н"' + @значение + ""
Когда @Operator='contains'
Тогда @поле + " как " + 'Н"'+'%'+параметре@value + '%' + ""
Когда оператор @= "не содержит" или doesnotcontain @оператор =''
Тогда функция isnull(' + @поле + ',"")' + 'не нравится' + 'Н"'+'%'+параметре@value + '%' + ""
КОНЕЦ
Когда @DataType = 'Numeric'
ТОГДА ДЕЛО
Когда @Operator = 'gte'
Тогда @Field + '>= ' + @Value
Когда @Operator = 'lte'
Затем @Field + '<= ' + @Value
Когда @Operator = 'gt'
Затем @Field + '> ' + @Value
Когда @Operator = 'lt'
Затем @Field + '< ' + @Value
Когда @Operator = 'eq'
Тогда @Field + '=' + @Value
Когда @Operator = 'neq'
Затем @Field + '< & gt;' + @Value
КОНЕЦ
Когда @DataType IN ('DateTime')
ТОГДА ДЕЛО
Когда @Operator = 'gte'
Тогда @Field + '>= ' + "" + @Value +""
Когда @Operator = 'lte'
Тогда @Field + '<= ' + "" + @Value +""
Когда @Operator = 'gt'
Затем @Field + '> ' +""+ @Value +""
Когда @Operator = 'lt'
Затем @Field + '< ' +""+ @Value +""
Когда @Operator = 'eq'
Тогда @Field + ' = ' + "" + @Value +""
Когда @Operator = 'neq'
Затем @Field + '< & gt;' +""+ @Value +""
КОНЕЦ
Когда @DataType IN ('дата')
ТОГДА ДЕЛО
Когда @Operator = 'gte'
Затем конвертировать(тип varchar(10),'+@поле+',120)' + в '>= ' +""+ конвертировать(тип varchar(10),@значением,120) +""
Когда @Operator = 'lte'
Затем 'CONVERT(varchar(10),' +@Field+', 120)' + '<= ' + "" + CONVERT(varchar(10),@Value, 120) +""
Когда @Operator = 'gt'
Затем конвертировать(тип varchar(10),'+@поле+',120)' + в '> ' +""+ конвертировать(тип varchar(10),@значением,120) +""
Когда @Operator = 'lt'
Затем конвертировать(тип varchar(10),'+@поле+',120)' + в '> ' +""+ конвертировать(тип varchar(10),@значением,120) +""
Когда @Operator = 'eq'
Затем 'CONVERT(varchar(10),' +@Field+',120)' + ' = ' +""+ CONVERT (varchar(10),@Value, 120) +""
Когда @Operator = 'neq'
Затем конвертировать(тип varchar(10),'+@поле+',120)' + в '< и GT; ' +""+ конвертировать(тип varchar(10),@значением,120) +""
КОНЕЦ
Когда @DataType = 'Boolean'
ТОГДА ДЕЛО
Когда @Operator = 'eq'
Тогда @Field + ' = ' + "" + @Value +""
КОНЕЦ
КОНЕЦ
SET @WhereQuery=
ДЕЛО
WHEN @logic = " THEN '('+@SQLOperator+')'
Когда @логики в('и','или') и @параметр rownum=2, то ' '+@логики+ ' '+@SQLOperator+')'
Когда @логики в('и','или') и @параметр rownum=1 тогда '('+@SQLOperator
КОНЕЦ
RETURN @WhereQuery
КОНЕЦ
Что я уже пробовал:
Пытаясь понять логику функции и вывода, а также.
Suvendu Shekhar Giri
Разве не вы создали это?
Лучше всего спросить, кто его создал. Мы можем помочь только в том случае, если у вас есть проблема/сомнение в конкретной части сохраненного процесса.