PDA

View Full Version : جستجو با استفاده از عملگر LIKE



kami_63
دوشنبه 14 بهمن 1392, 10:44 صبح
با سلام

من یه sp دارم به شکل زیر


CREATE PROCEDURE sp1

@FlName NVARCHAR(50)
AS

SELECT *FROM T1 WHERE FlName LIKE '%' + @FlName + '%'

GO


حالا میخوام وقتی به sp علی رضا رو پاس کردم همه اونایی که اسمشون (علی،رضا،علیرضا) هست رو بهم نشون بده.

با تشکر از دوستان

fakhravari
دوشنبه 14 بهمن 1392, 18:43 عصر
create proc Serch(@serch nvarchar(200))
as
SELECT * FROM [BOOKHOME].[dbo].[B_Categories]
where [CategoryName] like N'%'+@serch+'%'

exec Serch N'بر'

kami_63
دوشنبه 14 بهمن 1392, 21:02 عصر
create proc Serch(@serch nvarchar(200))
as
SELECT * FROM [BOOKHOME].[dbo].[B_Categories]
where [CategoryName] like N'%'+@serch+'%'

exec Serch N'بر'


ممنون از راهنمایی شما ولی متاسفانه نتونستم ازش جوابی بگیرم. راهنمایی بیشتری میفرمایین

starting
سه شنبه 15 بهمن 1392, 09:27 صبح
حالا میخوام وقتی به sp علی رضا رو پاس کردم همه اونایی که اسمشون (علی،رضا،علیرضا) هست رو بهم نشون بده.

در این مواقع یکی از گزینه های روی میز رفتن به سمت Full Text Search هست. اما حل این مساله با T-SQL هم کار دشواری نیست.
برایتان الگوریتم و روال کار را شرح می دم خودتان سعی کنید پیاده کنید.
اولین مرحله مربوط میشه به تفکیک و جدا کردن کلمات رشته از هم. یعنی رشته "علی رضا" باید تبدیل بشه به "علی" و "رضا". حالا این دو کلمه در دو سطر از یک جدول مقیم میشن. سپس می تونید به سادگی با جدول اصلی جوین کنید و سطرهای مورد نظر را بدست بیارید.
حالا اگر بخواهید با وارد کردن "علی رضا" اسامی مثل "رضا علی" هم بیاره باید یه مرحله به راه حل اضافه بشه اون هم تولید تمام ترکیبات ممکنه است. کار کمی دشوار میشه اما با Recursive Cte میشه این موضوع را عملی کرد.
برای تفکیک کردن هم می تونید از روش های بسیار متنوع استفاده کنید. که یکی از متداول ترین اونها استفاده از جدولی به نام Tally است که شامل اعداد 1 تا N است. (در اینترنت بگردید مطلب زیاد هست)

kami_63
سه شنبه 15 بهمن 1392, 09:42 صبح
در این مواقع یکی از گزینه های روی میز رفتن به سمت Full Text Search هست. اما حل این مساله با T-SQL هم کار دشواری نیست.

می تونین در مورد اینکه چطور با Full Text Search باید اینکار رو بکنم توضیح بدین؟؟
من sql 2000 استفاده میکنم Full Text Search را نمیتونم توش پیدا کنم!!!!

starting
سه شنبه 15 بهمن 1392, 09:52 صبح
FTS روی زبان فارسی مانور خاصی نمیده.
2000 ندارم که بررسی کنم. اما در 2012 روی جدول مورد نظر راست کلیک کنید بعد گزینه Full Text Index را انتخاب و سپس از طریق Wizard ایندکس روی جدول ایجاد کنید
بعد از آن می توانید از دستورات مربوطه برای گرفتن انواع و اقسام پرس و جوها استفاده کنید.

گوگل فراموش نشه.