Цель этого в том, что я пытаюсь сравнить имена пользователей двух адресов электронной почты и посмотреть, совпадают ли они. На самом деле, все, что я хочу, - это чтобы это работало.
Когда я запускаю запрос, все, что я получаю: Недопустимый параметр длины, переданный в функцию LEFT или SUBSTRING.
Примечание: я изменил запрос. Это лучше иллюстрирует то, что я пытаюсь сделать. Примечание 2: я внес изменения, чтобы он работал правильно, но теперь, если параметр равен '', я получаю: Недопустимый параметр длины, переданный в функцию LEFT или SUBSTRING.
declare @ReportParameter1 nvarchar(16)
set @ReportParameter1 = '[email protected]'
declare @ReportParameter2 nvarchar(16)
set @ReportParameter2 = ''
select 'test'
where SUBSTRING (case @ReportParameter1 when '' then 'x@' else @ReportParameter1 end, 1, Charindex('@', case @ReportParameter1 when '' then 'x@' else @ReportParameter1 end) - 1) =
SUBSTRING (case @ReportParameter2 when '' then 'x@' else @ReportParameter2 end, 1, Charindex('@', case @ReportParameter2 when '' then 'x@' else @ReportParameter2 end) - 1)
Вот предложение where, которое я использовал для решения проблемы. Однако это научит меня быть более осторожным при копировании и вставке.
WHERE (substring(@ReportParameter1, 1, case when (CHARINDEX('@', @ReportParameter1) - 1) < 1 then 1 else CHARINDEX('@', @ReportParameter1) - 1 end) = SUBSTRING(@ReportParameter2, 1, CHARINDEX('@', @ReportParameter2) - 1))
AND ()
в предложенииWHERE
, вы должны поставить рядом с ним какое-то логическое условие - person sll   schedule 28.11.2011