اوراکل اپکس- مرتب سازی فارسی در اوراکل

 

مرتب سازی حروف فارسی در اوراکل

 

همانطور که می دانید مرتب سازی حروف فارسی در دیتابیس اوراکل بصورت صحیح انجام نمی شود. حتی اگر NLS_SORT را با ARABIC در اوراکل تنظیم کنیم به علت وجود چهار کاراکتر (گچپژ) که در زبان فارسی اضافه تر از زبان عربی وجود دارد و همینطور جابجایی ترتیب دو کارکتر (و-ه)، مرتب سازی به زبان فارسی درست انجام نمی شود.
در این خصوص اسکریپتی را در زیر قرار می دهم که می توانید در هر جایی که خواسته باشید اطلاعات جدول خود در اوراکل را بصورت مرتب شده نمایش دهید.
شما فقط باید نام جدول و فیلدی را که می خواهید مرتب شود، جایگزین کنید.
در ابتدا باید از طریق کوئری زیر در دیتابیس اوراکل نوع NLS_CHARACTERSET را مشاهده نمایید.
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
result:
NLS_CHARACTERSET AR8MSWIN1256
نکته: در صورتیکه NLS_CHARACTERSET = AR8MSWIN1256 در اوراکل تنظیم شده باشد بصورت زیر عمل کنید:

SELECT
NAME
,FAMILY
FROM EMP
ORDER BY TRANSLATE(LTRIM(RTRIM(FAMILY))
,'پچحخدذرزژسشصضطظعغگو','هحخدذرزسشصض×طظعغـàه')
نکته:
در صورتیکه برای کارکتر ‘ک’ از کد اسکی ۲۲۳ استفاده شده باشد آن کلمه ای که با این کارکتر باشد درمرتب سازی در ابتدا آورده می شود. برای تصحیح کردن آن می توانید بصورت زیر عمل کنید.
SELECT
NAME
,FAMILY
FROM EMP
ORDER BY TRANSLATE(LTRIM(RTRIM(replace(FAMILY,chr(152),chr(223))))
,'پچحخدذرزژسشصضطظعغگو','هحخدذرزسشصض×طظعغـàه')
نکته: در صورتیکه NLS_CHARACTERSET = UTF8 می باشد باید بصورت زیر عمل کنید.
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
result:
NLS_CHARACTERSET UTF8
SELECT
NAME
,FAMILY
FROM EMP
ORDER BY TRANSLATE(LTRIM(RTRIM(replace(FAMILY,chr(55683), chr(55977)))),'بپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیی','بهتثجحخدذرزسشصضطظعغفقکلمنًٌٍَُِّ')
امیدوار هستم که به دوستان کمک کرده باشم.
مرتب سازی حروف فارسی در اوراکل
امتیاز ۵ از ۱ رای

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست
Oracle APEX Capabilities (OAC)