View Full Version : مشکل در جستجوی فارسی
ozzy_mra
سه شنبه 01 آذر 1390, 08:59 صبح
با سلام
من یه تیبل دارم که اطلاعاتش از چند تا فایل و دیتا بیس متفاوت تو Sql server جمع آوری شده یعنی از Foxpro,Access,....
من یه سلکت ساده نوشتم که مثلاً یه سری فیلد رو بر اساس نام و نام خانوادگی جستجو شونده نمایش میده وقتی خودم نام و نام خانوادگی رو تایپ می کنم هیچ جوابی برگردونده نمیشه ولی وقتی همون مقادیر رو از جدولم Copy Paste می کنم جواب رو بر می گردونه فکر می کنم مشکل یونیکد باشه و همچنین تو کاراکتر هایی مانند ی ک گ ژ ـه
نمی دونم باید چکار انجام بدم اگه ممکنه راهنماییم کنید
یوسف زالی
سه شنبه 01 آذر 1390, 10:51 صبح
سلام.
فکر می کنم در این خصوص 20 دفعه ای پست زده شده.
جستجو کن دوست عزیز
ozzy_mra
سه شنبه 01 آذر 1390, 11:10 صبح
سلام.
فکر می کنم در این خصوص 20 دفعه ای پست زده شده.
جستجو کن دوست عزیز
اگه لینک 1/20 این پستا رو هم قرار می دادید خیلی ازتون ممنون می شدم
pooria_googooli
سه شنبه 01 آذر 1390, 11:52 صبح
شما قبل از اون عبارتي كه ميخواي سرچ كني يك N بذاري مشكلت حل ميشه
ozzy_mra
سه شنبه 01 آذر 1390, 13:04 عصر
شما قبل از اون عبارتي كه ميخواي سرچ كني يك N بذاري مشكلت حل ميشه
من کوئریمو اینجوری تغییر دادم ولی نشد.
اشتباه کردم ؟
"SELECT uview_gheirIrani.frdSN,uview_gheirIrani.frdName as [نام], uview_gheirIrani.frdFamily as [نام خانوادگی], uview_gheirIrani.frdPedar as [نام پدر], uview_gheirIrani.frdCodeMeli as [کد ملی], uview_gheirIrani.frdShenasnameNo as [شماره شناسنامه], uview_gheirIrani.frdShenasnameSeri as [سری شناسنامه],uview_gheirIrani.frdShenasnameSerial as [سریال شناسنامه],uview_gheirIrani.frdTavalodDate as [تاریخ تولد],uview_gheirIrani.frdJensiat as [جنسیت],cKeshvar.Onvan as [ملیت],cKeshvar.OnvanMeliat as [تابعیت],uview_gheirIrani.NoIraniCode as [کد تابعیت] FROM uview_gheirIrani INNER JOIN cKeshvar ON uview_gheirIrani.frdMeliatID = cKeshvar.KeshvarSN INNER JOIN cKeshvar AS cKeshvar_1 ON uview_gheirIrani.frdTabeiatID = cKeshvar_1.KeshvarSN Where frdName='N'+@a and frdFamily='N'+ @b and frdPedar ='N'+ @c OR frdName= 'N' + @a and frdFamily='N' + @b and frdPedar ='N' + @c and frdShenasnameNo='N' + @d";
ضمناً این تو سی شارپه که پارامترها رو از برنامه بهش پاس میدم
یوسف زالی
سه شنبه 01 آذر 1390, 22:37 عصر
دوست من برای اولین جستجو تحت عنوان "ک عربی":
http://barnamenevis.org/showthread.php?306287-مشکل-در-پیدا-کردن-حروف-فارسی-از-جمله-ع،ک،گ-و-شاید-چندتای-دیگه-با-دستور-Where&highlight=%D8%B9%D8%B1%D8%A8%DB%8C
http://barnamenevis.org/showthread.php?297079-مشكل-در-Collation&highlight=%D8%B9%D8%B1%D8%A8%DB%8C
http://barnamenevis.org/showthread.php?295709-بهترین-روش-جستجوی-عبارت-فارسی-در-SQlServer&highlight=%D8%B9%D8%B1%D8%A8%DB%8C
http://barnamenevis.org/showthread.php?279339-مشگل-با-کلمه-ای-که-شامل-حرف-quot-ی-quot-باشه-در-دستور-select&highlight=%D8%B9%D8%B1%D8%A8%DB%8C
مطمئنا بر اساس کلمات دیگر هم کلی مطلب پیدا خواهید کرد.
ozzy_mra
چهارشنبه 02 آذر 1390, 09:38 صبح
شما قبل از اون عبارتي كه ميخواي سرچ كني يك N بذاري مشكلت حل ميشه
همین کار رو انجام دادم حالا برای یه سری از اطلاعاتم برگردونده می شه و یه سری از اطلاعاتم جواب برگردونده نمی شه و بدون گذاشتن N جواب میده مثلاً کوئری زیر جواب نمیده ولی وقتی N رو بر می دارم جواب میده
SELECT uview_gheirIrani.frdSN,uview_gheirIrani.frdName as [نام], uview_gheirIrani.frdFamily as [نام خانوادگی], uview_gheirIrani.frdPedar as [نام پدر],
uview_gheirIrani.frdCodeMeli as [کد ملی], uview_gheirIrani.frdShenasnameNo as [شماره شناسنامه], uview_gheirIrani.frdShenasnameSeri as [سری شناسنامه],
uview_gheirIrani.frdShenasnameSerial as [سریال شناسنامه],uview_gheirIrani.frdTavalodDate as [تاریخ تولد],uview_gheirIrani.frdJensiat as [جنسیت],
cKeshvar.Onvan as [ملیت],cKeshvar.OnvanMeliat as [تابعیت],uview_gheirIrani.NoIraniCode as [کد تابعیت] FROM uview_gheirIrani
INNER JOIN
cKeshvar ON uview_gheirIrani.frdMeliatID = cKeshvar.KeshvarSN
INNER JOIN
cKeshvar AS cKeshvar_1 ON uview_gheirIrani.frdTabeiatID = cKeshvar_1.KeshvarSN
Where
frdName=N'مارینا' and frdFamily=N'صادقی هریس' and frdPedar = N'الکساندر'
ozzy_mra
چهارشنبه 02 آذر 1390, 09:48 صبح
کوئریمو اینجوری تغییر دادم درست شد
string cText = "SELECT uview_gheirIrani.frdSN,uview_gheirIrani.frdName as [نام], uview_gheirIrani.frdFamily as [نام خانوادگی], uview_gheirIrani.frdPedar as [نام پدر], uview_gheirIrani.frdCodeMeli as [کد ملی], uview_gheirIrani.frdShenasnameNo as [شماره شناسنامه], uview_gheirIrani.frdShenasnameSeri as [سری شناسنامه],uview_gheirIrani.frdShenasnameSerial as [سریال شناسنامه],uview_gheirIrani.frdTavalodDate as [تاریخ تولد],uview_gheirIrani.frdJensiat as [جنسیت],cKeshvar.Onvan as [ملیت],cKeshvar.OnvanMeliat as [تابعیت],uview_gheirIrani.NoIraniCode as [کد تابعیت] FROM uview_gheirIrani INNER JOIN cKeshvar ON uview_gheirIrani.frdMeliatID = cKeshvar.KeshvarSN INNER JOIN cKeshvar AS cKeshvar_1 ON uview_gheirIrani.frdTabeiatID = cKeshvar_1.KeshvarSN Where frdName='@a' and frdFamily='@b' and frdPedar = '@c' OR frdName='@a' and frdFamily='@b' and frdPedar = '@c' and frdShenasnameNo='@d'";
cText = cText.Replace("@a", Fname);
cText = cText.Replace("@b", Lname);
cText = cText.Replace("@c", FatherName);
cText = cText.Replace("@d", shenasNo);
da.SelectCommand.CommandText = cText;
Galawij
چهارشنبه 02 آذر 1390, 09:51 صبح
اطلاعات بانک اطلاعاتی با همدیگر همخوانی ندارد، یکدست نیست.
این Query را یکبار اجرا کنید تا داده های وارد شده یکدست بشه.
DECLARE @Table NVARCHAR(128)
DECLARE @Col NVARCHAR(128)
DECLARE Table_Cursor CURSOR
FOR
SELECT a.name, --table
b.name --col
FROM sysobjects a,
syscolumns b
WHERE a.id = b.id
AND a.xtype = 'u' --User table
AND (
b.xtype = 99 --ntext
OR b.xtype = 35 -- text
OR b.xtype = 231 --nvarchar
OR b.xtype = 167 --varchar
OR b.xtype = 175 --char
OR b.xtype = 239 --nchar
)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @Table,@Col
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC (
'update [' + @Table + '] set [' + @Col +
']= REPLACE(REPLACE(CAST([' + @Col +
'] as nvarchar(max)) , NCHAR(1740), NCHAR(1610)),NCHAR(1705),NCHAR(1603)) '
)
FETCH NEXT FROM Table_Cursor INTO @Table,@Col
END CLOSE Table_Cursor DEALLOCATE Table_Cursor
ozzy_mra
چهارشنبه 02 آذر 1390, 11:16 صبح
سپاس فراوان، با این کوئری کلیه کاراکتر هام اصلاح میشه دیگه؟ ی ک و ...
ozzy_mra
چهارشنبه 02 آذر 1390, 14:34 عصر
اطلاعات بانک اطلاعاتی با همدیگر همخوانی ندارد، یکدست نیست.
این Query را یکبار اجرا کنید تا داده های وارد شده یکدست بشه.
DECLARE @Table NVARCHAR(128)
DECLARE @Col NVARCHAR(128)
DECLARE Table_Cursor CURSOR
FOR
SELECT a.name, --table
b.name --col
FROM sysobjects a,
syscolumns b
WHERE a.id = b.id
AND a.xtype = 'u' --User table
AND (
b.xtype = 99 --ntext
OR b.xtype = 35 -- text
OR b.xtype = 231 --nvarchar
OR b.xtype = 167 --varchar
OR b.xtype = 175 --char
OR b.xtype = 239 --nchar
)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @Table,@Col
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC (
'update [' + @Table + '] set [' + @Col +
']= REPLACE(REPLACE(CAST([' + @Col +
'] as nvarchar(max)) , NCHAR(1740), NCHAR(1610)),NCHAR(1705),NCHAR(1603)) '
)
FETCH NEXT FROM Table_Cursor INTO @Table,@Col
END CLOSE Table_Cursor DEALLOCATE Table_Cursor
این کوئری رو اجرا کردم ولی هنوز اطلاعاتم به صورت عربی نمایش داده میشه مثلا : جليلي هنوز زیر ی دو نقطه هست
shocraneh
چهارشنبه 30 فروردین 1391, 20:51 عصر
باسلام من میخام اطلاعات قدیمی جدولم رو فارسی کنم .لطفا دوستان بگن تو کوئری بالا اسم جدول و ستون مورد نظر خودم رو به کدوم یکی از پارامترها نسبت بدم؟
یوسف زالی
چهارشنبه 30 فروردین 1391, 22:27 عصر
اون کوئری تمام فیلدهای تمام جداول رو اصلاح می کنه و نیازی به پارامتر نداره.
shocraneh
جمعه 01 اردیبهشت 1391, 08:13 صبح
باسلام وتشکر.من کوئری رو اجرا میکنم و درست هم اجرا میشه ولی ی و ک هنوز عربی است ؟؟ چی کار کنم؟
جایی تو خطوط کوئری دستور replace مثلا ی عربی با فارسی داده نشده ، لازم نیست؟! یا کدها رو جداگانه خودمون باید replaceکنیم ...پس کار این کوئری چیه؟
با سپاس فراوان
shocraneh
شنبه 02 اردیبهشت 1391, 01:25 صبح
باتشکر از دوستان من چون عربی رو باید به فارسی تبدیل می کردم .جای یونیکد رو باید عوض میکردم.ممنون از لطف دوستان
select NCHAR(1740) as 'ی فارسی',
NCHAR(1610) as 'ی عربی',
NCHAR(1705) as 'ک فارسی',
NCHAR(1603) as 'ک عربی'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.