PDA

View Full Version : جستجو



eyelash
شنبه 23 دی 1385, 01:58 صبح
سلام وقت به خیر
دوستان من می خوام توی فیلدهای خاصی از جدولم وجود کلمه خاص که در@W ذخیره شده را بررسی کنم و فیلدهایی که اون کلمه را دارن برگردونم. برای این کار کد زیر را نوشتم ولی جواب نمیده

Select * from Packages Where (CHARINDEX(detail, @W) > 0
or CHARINDEX ([Name], @W) > 0 or CHARINDEX(topic2, @W) > 0)

البته تمام فیلدهای مورد نظر و @W از نوعNvarchar با طول های متفاوت هستن
ممنون می شم دوستان بگن مشکل عبارت بالا چیه.

Kamyar.Kimiyabeigi
شنبه 23 دی 1385, 08:20 صبح
EXECUTE('SELECT * FROM Package ' +
'WHERE Detail LIKE ' + '''%''' + @w + '''%''' + ' OR' +
'[Name] LIKE ' + '''%''' + @w + '''%''' + ' OR' +
'Topic2 LIKE ' + '''%''' + @w + '''%''')

eyelash
شنبه 23 دی 1385, 14:52 عصر
ممنون آقای کیمیابیگی
من کد را به شکل زیر اجرا کردم


declare @W as Nvarchar(50)
set @W = N'س'
EXECUTE('SELECT * FROM Packages ' +
'WHERE Detail LIKE ' + '''%''' + @w + '''%''' + ' OR ' +
'[Name] LIKE ' + '''%''' + @w + '''%''' + ' OR ' +
'Topic2 LIKE ' + '''%''' + @w + '''%''')

ولی خطای زیر را می ده.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'س'.

Kamyar.Kimiyabeigi
شنبه 23 دی 1385, 16:11 عصر
eyelash عزیر حق با شماست من صبح وقت نداشتم که Compile کنم براتون درست کردم


declare @W Nvarchar(50)
set @W = N'س'
execute('SELECT * FROM Packages ' +
'WHERE Detail LIKE ' + '''%' + @w + '%''' + ' OR ' +
'[Name] LIKE ' + '''%' + @w + '%''' + ' OR ' +
'Topic2 LIKE ' + '''%' + @w + '%''')

eyelash
یک شنبه 24 دی 1385, 01:27 صبح
declare @W Nvarchar(50)
set @W = N'س'
execute('SELECT * FROM Packages ' +
'WHERE Detail LIKE ' + '''%' + @w + '%''' + ' OR ' +
'[Name] LIKE ' + '''%' + @w + '%''' + ' OR ' +
'Topic2 LIKE ' + '''%' + @w + '%''')


برای جستجو در فیلد های فارسی :


declare @W Nvarchar(50)
set @W = N'س'
execute('SELECT * FROM Packages ' +
'WHERE Detail LIKE N' + '''%' + @w + '%''' + ' OR ' +
'[Name] LIKE N' + '''%' + @w + '%''' + ' OR ' +
'Topic2 LIKE N' + '''%' + @w + '%''')