View Full Version : جستجوی یک رشته در db با جداکردن کلمه ها از هم؟؟؟
hgh.just.hony
شنبه 15 مهر 1391, 12:55 عصر
سلام
می خواستم بپرسم که یک رشته ک حاوی مثلا 3 کلمه کاملا مستقل است (مبل کوله پشتی) چگونه میتونم کلمه ها را از هم حدا کنم و در هر رکوردم بتونم هر سه کلمه را بصورت جدا سرچ کنم
یعنی یه رکورد که فقط حاوی کلمه پشتی است را درنتیجه جستجوی بیاورد
حمیدرضاصادقیان
شنبه 15 مهر 1391, 15:17 عصر
سلام.
شما در جستجوی رشته ای به دو صورت میتونید عمل کنید.
یا اینکه از Like استفاده کنید که هرچیزی که داخل عبارت باشه رو براتون میاره و اگر قبل یا بعد از عبارت نیز از % استفاده کنید ، مابقی اون عبارت هم هرچی باشه جستجو میکنه.
مانند:
Select * from Table1
Where name like'%Ali%'
در این جستجو هرچی علی هست رو میاره و براش تفاوتی نمیکنه قبل یا بعد از علی چه چیزی باشه و همه اونها رو در جستجو بهتون نمایش میده.
اگر میخواهید دقیقا عین همون عبارت باشه میتونید با علامت = جستجو رو انجام بدید.
مانند:
Select * from table1
Where name='ali'
در این جستجو فقط رکوردهایی که حاوی کلمه علی هستند رو میاره.
(اگر جوابتون این نیست لطفا واضح تر توضیح بفرمائید.)
hgh.just.hony
یک شنبه 16 مهر 1391, 13:04 عصر
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Split](@String NVARCHAR(MAX), @Delimiter CHAR(1))
RETURNS @temptable TABLE (items NVARCHAR(MAX))
AS
BEGIN
DECLARE @idx INT
DECLARE @slice NVARCHAR(MAX)
SELECT @idx = 1
IF len(@String)<1 OR @String IS NULL RETURN
while @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@String)
IF @idx!=0
SET @slice = LEFT(@String,@idx - 1)
ELSE
SET @slice = @String
IF(len(@slice)>0)
INSERT INTO @temptable(Items) VALUES(@slice)
SET @String = RIGHT(@String,len(@String) - @idx)
IF len(@String) = 0 break
END
RETURN
END
this is the ansewer
to check this just write : select * from dbo.Split('hi my name is hgh just hony)
see the result
:چشمک:
حمیدرضاصادقیان
یک شنبه 16 مهر 1391, 13:22 عصر
خوب این تابع شما یک رشته رو ازهم جدا میکنه و به صورت جداگانه درون جدول موقت قرار میده و نتیجه رو برمیگردونه.
من هنوز دقیق متوجه درخواست شما نشدم.
شما الان میخواهید چه کاری انجام بدید؟
hgh.just.hony
یک شنبه 16 مهر 1391, 13:38 عصر
گوگل وقتی یه رشته بهش میدین اون رشته را کلمه کلمه سرج می کنه
منم میخوام که رشتم کلمه کلمه بشه بعد هر کلمه را با or سرچ کنه
مشکلم اینحاست که میخوام اون کلمه ای را که بیشتر تکرار شده یا اینکه اسم یه کالا هست را در ردیف اولم بیاره
مثلا تو سایت برنامه نویس اگه سرچ کنین ساخت موتور جستجو
می بینید که اولین مورد همین تایتل و داره مورد هایی بعدی هم یه ترتیب الویت میان
مثلا ردیف 2 فقط توشته جستجو
می خوام همچین سرچی بنویسم مثل سایت برنامه نویس
plz hlp me
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.