ايران ويج

نسخه‌ی کامل: نوشتن پروسیجر برای جستجو در بانک
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
این کدیه که برای جستجو نوشتم
کد:
ALTER procedure [dbo].[sp_searchkala]
@pname nchar(30)
as
begin
select * from product
where name like @pname
end
حالا می خوام علامت % رو بهش اضافه کنم تا برای جستجو به یک حرف حساس بشه ولی هر جور می زنم کار نمیکنه اینم نمونه هاش:
کد:
where name like (N'%'+@pname+'%')

کد:
where name like @pname + '%'

پیشاپیش ممنون از راهنماییتون
سلام
متغییر از نوع nchar به طول 30 یعنی یک آرایه به طول 30 کاراکتر که با اسپیس (فاصله) پر شده .
یعنی اگه مقدار "علی" رو به پروسیجر ارسال کنین متغییر شما مقدارش میشه این :
کد:
"علی                           "
یعنی علی به همراه 27 تا فاصله بعدش .
راه حل :
نوع متغییر رو تغییر بدین به nvarchar
که طولش حداقل به مقدار داده کم بشه ( حداکثرش ثابته)
یا اگه نمیخواهیین نوع متغییر رو عوض کنین میتونین از تابع تریم استفاده کنین تا فاصله ها حذف بشن به این شکل :
کد:
where name like (N'%'+rtrim(@pname)+'%')