Ես փորձում եմ ստեղծել կոմունալ պահեստավորված proc, որը կարող է վերցնել պարամետր և հարցնել հարմար աղյուսակ՝ որոշ արագ տեղեկություններ ստանալու համար: Դրա համար ես պետք է ավելացնեմ «%» նիշը պարամետրի անցնելուց առաջ և հետո, որպեսզի օգտագործեմ այն like
-ով հարցումում, ինչպես ցույց է տրված ստորև:
Աշխատանքային կոդը - եթե կոշտ կոդավորված է
select some_field from TABLE where nm_field like ('%'+'abc'+'%')
Բայց երբ փորձում եմ նույնը օգտագործել փոփոխականի հետ, ես ավելի քիչ արդյունքներ եմ ստանում՝ համեմատած վերը նշված հարցման հետ
declare @nm char(100)
select @nm = 'abc'
select some_field from TABLE where nm_field like ('%'+@abc+'%')
Որոշ հետաքննության, փորձարկման և սխալի դեպքում հետևյալ ընտրությունը ցույց է տալիս, որ «%» ավելացվում է միայն պարամետրից առաջ, և ոչ թե երկու կողմից:
declare @name char(20), @other char(20)
select @name = 'abc'
select @other = ('%' + @name + '%')
select @other
Սպասվող արդյունքը
%abc%
Բայց իրական արդյունքը
%abc
Ես օգտագործում եմ Sybase ASE-12.5.4-ը
Խնդրում եմ, կարո՞ղ եք օգնել ինձ, թե ինչն է սխալ այստեղ:
varchar
տիպը 27.08.2013