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

 

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

 

همانطور كه مي دانيد مرتب سازي حروف فارسي در ديتابيس اوراكل بصورت صحيح انجام نمي شود. حتی اگر 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))
,'پچحخدذرزژسشصضطظعغگو','ةحخدذرزسشصض×طظعغـàه')
نكته:
در صورتيكه براي كاركتر ‘ك’ از كد اسكي 223 استفاده شده باشد آن كلمه اي كه با اين كاركتر باشد درمرتب سازي در ابتدا آورده مي شود. براي تصحيح كردن آن مي توانيد بصورت زير عمل كنيد.
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)))),'بپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیي','بةتثجحخدذرزسشصضطظعغفقكلمنًٌٍَُِّ')
امیدوار هستم که به دوستان کمک کرده باشم.
4/5 - (4 امتیاز)

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

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

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

keyboard_arrow_up
Oracle APEX Capabilities (OAC)