مجيد اطلس باف

Majid Atlasbaf
91 - پیام , 188 - نظر

پیوندهای اصلی

اخبار


Page Rank Tool

بایگانی پیامها

بایگانی سال ۱۳۸۸

فروردین ۱۳۸۸، (۱)

بایگانی سال ۱۳۸۷

دی ۱۳۸۷، (۱)
آذر ۱۳۸۷، (۱)
آبان ۱۳۸۷، (۱)
مهر ۱۳۸۷، (۱)
شهریور ۱۳۸۷، (۱)
مرداد ۱۳۸۷، (۱)
تیر ۱۳۸۷، (۱)
خرداد ۱۳۸۷، (۱)
اردیبهشت ۱۳۸۷، (۱)
فروردین ۱۳۸۷، (۱)

بایگانی سال ۱۳۸۶

اسفند ۱۳۸۶، (۱)
بهمن ۱۳۸۶، (۳)
آذر ۱۳۸۶، (۱)
آبان ۱۳۸۶، (۱)
مهر ۱۳۸۶، (۱)
شهریور ۱۳۸۶، (۱)
مرداد ۱۳۸۶، (۲)
خرداد ۱۳۸۶، (۱)
اردیبهشت ۱۳۸۶، (۱)
فروردین ۱۳۸۶، (۲)

بایگانی سال ۱۳۸۵

اسفند ۱۳۸۵، (۱)
دی ۱۳۸۵، (۱)
آبان ۱۳۸۵، (۲)
مهر ۱۳۸۵، (۲)
شهریور ۱۳۸۵، (۳)
مرداد ۱۳۸۵، (۱)
تیر ۱۳۸۵، (۴)
خرداد ۱۳۸۵، (۱)
اردیبهشت ۱۳۸۵، (۵)
فروردین ۱۳۸۵، (۲)

بایگانی سال ۱۳۸۴

اسفند ۱۳۸۴، (۱)
دی ۱۳۸۴، (۳)
آذر ۱۳۸۴، (۵)
آبان ۱۳۸۴، (۲)
مهر ۱۳۸۴، (۷)
شهریور ۱۳۸۴، (۴)
مرداد ۱۳۸۴، (۳)
خرداد ۱۳۸۴، (۳)
اردیبهشت ۱۳۸۴، (۳)
فروردین ۱۳۸۴، (۵)

بایگانی سال ۱۳۸۳

اسفند ۱۳۸۳، (۴)
بهمن ۱۳۸۳، (۴)

دسته بندی پیامها

(rss) مطالب مرتبط با NET.
(rss) مطالب مرتبط با SQL
(rss) مطالب مرتبط با UNIX

گالری عکسها

عکسهای مقالات

سایت های مرتبط

Persian Websites Directory
DSP algorithms development

همکاران

حمیدرضا طاهریان
شیما دهباشی
فاطمه طاهریان
محسن طاهریان

مشکل "ک" و "ی" فارسی در SQL Server

هنگام ذخیره اطلاعات فارسی در یک پایگاه داده که collation آن بصورت Arabic_CI_AS تعریف شده بود، به مشکل جالبی برخورد کردیم. موقع INSERT و UPDATE کردن حروف فارسی با حروف عربی جایگزین می شوند و هیچ مشکلی بوجود نمی آید. موقع اجرای SELECT هم، چه رشته بصورت فارسی چه بصورت عربی فرستاده شود، نتیجه یکسان است. بعنوان مثال query زیر را در نظر بگیرید:

SELECT * FROM tblUsers WHERE username='مجید';

در دستور فوق حرف ی در کلمه "مجید" چه فارسی باشد، چه عربی نتیجه یکسان است. اما مشکلی که بوجود آمد این بود که اگر چنین query داخل Stored Procedure قرار داده شود در اینصورت نتیجه اجرای آن با "ی" فارسی و "ي" عربی متفاوت خواهد بود!!

ارسال شده در تاریخ ۱۸ تیر ۱۳۸۵ - 8:15 صبح

نظرات

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

من در php دقیقا همین query رو می نویسم ولی name های انگلیسی رو پیدا می کنه ولی کلمات فارسی رو پیدا نمی کنم چه ک و ی داشته باشه یا نه در php از utf-8 یا windows-1256 استفاده کردم زبان پیش فرض sql رو هم arabic کردم
ولی فرقی نکرد در ضمن من از sql استفاده کردم و ارتباطش با php رو با odbc بر قرار کردم ممنون می شم اگه منو راهنمایی کنید با تشکر
۲۳ تیر ۱۳۸۵ - 6:55 عصر | محمد زاده

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

در SP بنویس
Where Name = N"مجید"
۲۵ تیر ۱۳۸۵ - 3:46 عصر | پیام

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

با تشکر
من از روشی که گفتید استفاده کردم و درست شد اما هنوز کلماتی که 'ی' داشته باشند را پیدا نمی کند لطفا در این مورد نیز به من کمک کنید
۵ مرداد ۱۳۸۵ - 11:02 صبح | محمد زاده

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

من پروژه ای دارم که با asp باید بنویسم و پایگاه داده ام هم acsses هست من تو سیو کردن ی فارسی مشکل دارم این جوری سیو می شه (ی) یکی به من کمک کنه
۱۱ مهر ۱۳۸۵ - 4:52 عصر | fatima

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

سلام
من هم همين مشكل را دقيقا" دارم . تمام تنظيماتم مثل شماست .
حتي دستور where name=n"مجيد " را هم تايپ كردم ولي error مي دهد. مي شه راه حل مشكاتان را براي من ارسال كنيد؟
ممنون مي شم .
۱۵ مهر ۱۳۸۵ - 9:16 صبح | samaneh

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

سلام دوست عزيز
من پاسخي براي سوال شما ندارم
فقط مي خوام اگه مي تونين يه صفحه از كد اتصال php , sqlserver رو كه درش يه query هم اجرا شده رو برام بفرستين
ممنون ميشم
خيلي لنگ اين كد هستم
abolfazleganji@yahoo.com
۹ آذر ۱۳۸۵ - 2:16 عصر | my name

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

برای حل مشکل ی باید در هنگام Insert , Update یک رکورد در DB یک Triger اضافه کنید که ی را با ي جایگزین کند :
مثال:

CREATE TRIGGER TrueStr ON [dbo].[Table1]
After INSERT, UPDATE
AS
Update Table1 SET [name] = REPLACE([name],NCHAR(1740),NCHAR(1610))
۲۹ فروردین ۱۳۸۶ - 12:01 عصر | سلام

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

سلام . من نمی تونم نام فیلدهامو توی SQL Server 2000 فارسی انتخاب کنم . مثلاً میخوام فیلدی با عنوان "نام خانوادگی" داشته باشم . اما ایراد میگیره .
unable to bind .............
لطفاً یکی بشه F1 من !!!
11 روز دیگه تحویل پروژه دارم .
۱۶ تیر ۱۳۸۶ - 6:46 عصر | pouria

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

نمی شود در MSQL نام فیلد را فارسی نوشت اگر هم بشود به مشکل بر می خورید بهتر است انگلیسی بنویسید و حدالمکان فاصله هم ندهید.
۱۰ مرداد ۱۳۸۶ - 2:24 عصر | مخ

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

سمانه:
حرف n را بايد بزرگ N بنويسي
۲۷ مرداد ۱۳۸۶ - 8:24 عصر | يوسف

# ذخیره کردن فارسی در Sql با php  

من نمی توانم فارسی تو SQl ذخیره کنم صفحات php هم utf-8 گذاشتم بعد جوری گیرم
۲۴ آذر ۱۳۸۶ - 11:06 صبح | کامران

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

salam
۸ دی ۱۳۸۶ - 12:35 عصر | m

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

اين مشكل بيشتر زماني به وجود مي ياد كه بانك رو به يه سيستم ديگه انتقال بدين اما اگر هنگام درج از N استفاده كنيد روي همان سيستم نبايد مشكي داشته باشيد :
insert int TB1 (name) valuse (N'ياوري' ) where ID = 1 ;
۹ دی ۱۳۸۶ - 11:19 صبح | aqil

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

تمام"ی" ها باید به "ي" تبدیل شود چون اصلا ی را sql server نه می شنانسه نه می تونه پیداشون کنه از اون عزیزی که کد مربوط به trigger گذاشت خیلی ممنونم ولی اون کد فکر کنم برای triger مناسب نباشه (هر بار که insert انجام می شه کل جدول دوباره به روز می شه که منتقی نیست) ولی در کل اگه یک بار کل اطلاعات قبلی رو به روز کنیم و یک تریگر بزاریم که هر اطلاعات جدیدی که در دیتابیس وارد می شه رو اصلاح کنه مشکل حل شده.:)
از دوستان اگه کسی تونست یه تابع یا دستور برای این که با اجراش در کل جداول ی رو به ي تبدیل کنه
۳۰ دی ۱۳۸۶ - 3:31 صبح | لوکال

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

public function ensurePersianFont($string)
{
$patterns = array ('/ي/','/¬/', '/ک/','/ی/');
$replace = array ('ي','‌', 'ك','ي');
return preg_replace($patterns, $replace, $string);
}
من اين تابع رو واسه php نوشتم.بهتره اول يه برنامه بنويسين و كل ديتا بيس رو با ي عربي جايگزين كنين و از اين به بعد هر چيزي كاربر وارد مي كنه رو بدين به اين تابع تا واستون عربيش كنه و تو بانك بريزه .موقع جستجو هم اول كلمه دريافتي رو با اين تابع تبديل كنين بعد query بزنين
موفق باشين برنامه نويسهاي عزيز
۲۰ خرداد ۱۳۸۷ - 8:59 صبح | ابوالفضل

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

دوباره
public function ensurePersianFont($string)
{
$patterns = array ('/ي/','/¬/', '/ک/','/ی/');
$replace = array ('ي','‌', 'ك','ي');
return preg_replace($patterns, $replace, $string);
}
۲۰ خرداد ۱۳۸۷ - 9:02 صبح | ابوالفضل

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

با سلام
من مشکلی در insert اطلاعاتع به sql server 2000 به صورت فارسی از php دارم به طوری که نمی توانم اطلاعات فارسی که insert میشه رو وارد کنم
لطفا منو کمک کنید.
۲۸ بهمن ۱۳۸۷ - 12:50 عصر | صفا فیضی

# لطفا کمک کنید................  

من مشکلی در insert اطلاعات به sql server 2000 به صورت فارسی از php دارم به طوری که نمی توانم اطلاعات فارسی که insert میشه رو وارد کنم
لطفا منو کمک کنید.
۲۸ بهمن ۱۳۸۷ - 1:00 عصر | صفا فیضی

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

UPDATE tMain
SET Farsi =replace(Farsi,N'ك',N'ک')(
۲۳ آذر ۱۳۸۸ - 12:15 عصر | مریم

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

سلام

من collection رو بروی Arabic_CI_AS تعریف کردم. ولی وقتی اطلاعات رو میخوام بر اساس حروف البا مرتب کنم، همه چی درسته و اسامی که با ک شروع میشن رو بعد ی میاره؟!!!

:-؟
۱۹ مهر ۱۳۸۹ - 8:19 صبح | شهرام

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

بسم الله الرحمان الرحیم
با عرض سلام و تحیت، جواب پاسخ شما به شرح زیر می باشد:
1- هر رشته در sql بصورت رشته ای از کاراکترها می باشد و هر کارکتر یک بایت است که این استاندارد برای استاندارد ASCII می باشد ولی برای استفاده زبان هایی بجوز زبان انگلیسی همچون فارسی باید از نوعی به نام nvarchar استفاده کرد. اگر دقت کنید تنهاتفاوت نوشتاری این نوع با دیگر نوع ها حرف n می باشد که به معنای Unicode می باشد. sql برای این نوع از تبدیل UTF-8 استفاده می کند.
2-فراموش نکنید که collation دیتابیس خود را بر روی "Persion_100_CI_AS " یا "Arabic_CI_AS " تنظیم کنید.
3- پس از تشکیل جدول، اگر قرار باشد ستونی در خود رشته ای به زبان فارسی ذخیره کند باید نوع آن ستون از نوع nvarchar باشد.(طول رشته به انتخاب خودتان)
نکته بسیار مهم:
برای اجرای هر دستوری که رشته ای را بر می گرداند یا بروزرسانی می شود یا اضافه می شود و یا هر چیز دیگر باید قبل از قرار گیری کوتیشن(')، پیشوند N را قرار دهید تا به مفسر sql اعلام کنید که این رشته از نوع uNicode است.
به مثال های زیر توجه کنید :
INSERT INTO [family]([name],[family]) VALUES (N
'علی',
N
'محمدی'
(
Select * From family Where family
=
N
'محمدی'
ویرایشگر سایت خیلی ضعیف است بخاطر همین بود که برای بهم نخوردن دستورات، دستورات را در چند خط نوشتم.
مرتب سازی هم اگر با این روال رکوردها را وارد دیتابیس بکنید بصورت کاملا صحیح صورت می پذیرد.
برای مطالعه بشتر می توانید به سایت زیر مراجعه کنید :
http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html
یا علی.
۱۰ اسفند ۱۳۹۰ - 11:28 عصر | فلاحی آذر

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

سلام، دوستان احتیاجی نیست موقع Insert کردن N رو پشت مقدارتون قرار بدین فقط همون موقع Select کفایت می کنه. من این دستور رو در یک Table با 1 میلیون رکورد تست کردم
۲۹ فروردین ۱۳۹۱ - 1:06 عصر | علی پارلوس

# پاسخ به: مشکل "ک" و "ی" فارسی در SQL Server  

واقعا ممنونم..من به صورت زیر نوشتنم جواب داد

واسه ی
update table set x=REPLACE(x, NCHAR(1740),NCHAR(1610))

واسه ک
update table set x=REPLACE(x,NCHAR(1705),NCHAR(1603))
۲۴ آذر ۱۳۹۲ - 2:42 عصر | هنگامه

ارسال نظرات

عنوان:  
نام:  
آدرس الکترونیکی:
زبان:
توضیح:  
لطفا متن مقابل را در زیر وارد کنید
(کوچک یا بزرگ بودن حروف مهم نیست)