Page Nav

HIDE

Grid

GRID_STYLE

Breaking News

latest

Fungsi MySQL Mengubah Angka Desimal menjadi Romawi

Seperti kita ketahui bersama bahwa  desimal  merupakan sistem bilangan yang paling banyak dipakai.  Angka desimal  terdiri dari angka 0, 1, ...

Seperti kita ketahui bersama bahwa desimal merupakan sistem bilangan yang paling banyak dipakai. Angka desimal terdiri dari angka 0, 1, 2, 3 hingga 9. Sementara itu, terdapat model penulisan angka yang lain, yaituangka Romawi (Roman). Angka romawi terdiri dari simbol-simbol tertentu yang mewakili suatu nilai bilangan desimal. Simbol tersebut antara lain: I = 1, II = 2, III = 3, IV = 4, V = 5, X = 10, C = 100 dan seterusnya.

Dalam pembuatan suatu aplikasi, seringkali kita membutuhkan penyajian angka dalam bentuk (model) Romawi tersebut. Sebagai contoh dalam hal pembuatan nomor surat di suatu instansi, umumnya nomor bulan diganti dengan angka romawi. Contoh format nomor surat yang berlaku di salah satu instansi: 002/FTI/UBL/III/2011, dimana nomor bulan Maret (3) diganti dengan angka Romawi III. Oleh karena itu, kita memerlukan suatu prosedur atau fungsi untuk melakukan konversi dari angka desimal ke Romawi atau bahkan sebaliknya. Konversi dapat dilakukan di bahasa pemrograman maupun di dalam basis data yang digunakan.

Dalam postingan kali ini, saya akan menyajikan fungsi di MySQL yang nantinya dapat digunakan untuk melakukan konversi angka desimal menjadi angka Romawi.
Fungsi berikut ini dibuat oleh Corrado Pandiani dan saya ambil dari situs kumpulan code (snippet) MySQL. Berikut ini fungsinya:
DELIMITER $$

DROP FUNCTION IF EXISTS `toRoman`$$
CREATE FUNCTION `toRoman` (number INT) RETURNS TEXT
DETERMINISTIC
BEGIN

DECLARE basic_roman TEXT DEFAULT 'M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I';
DECLARE basic_value TEXT DEFAULT '1000,900,500,400,100,90,50,40,10,9,5,4,1';
DECLARE roman_string TEXT DEFAULT '';
DECLARE i INT DEFAULT 1;
DECLARE roman_symbol TEXT;
DECLARE roman_value INT;

SET roman_string = (SELECT IF(number<=0 OR number>=4000,NULL,roman_string));

WHILE number > 0 AND number < 4000 DO

SET roman_symbol = SUBSTRING_INDEX(SUBSTRING_INDEX(basic_roman,',',i),',',-1);
SET roman_value = SUBSTRING_INDEX(SUBSTRING_INDEX(basic_value,',',i),',',-1);

IF number >= roman_value THEN
SET roman_string = CONCAT(roman_string,roman_symbol);
SET number = number - roman_value;
ELSE
SET i = i + 1;
END IF;

END WHILE;

RETURN roman_string;

END$$

DELIMITER ;
Dan untuk membuat atau memasukkan fungsi tersebut di database MySQL, kita cukup menjalankan seluruh perintah di atas melalui Query Editor pada Front End MySQL kita. Mengenai pembuatan fungsi di MySQL lebih lengkapnya dapat Anda baca di buku gratis MySQL 5 yang sudah saya bagikan di situs ini.
Setelah fungsi tersebut dibuat, selanjutnya kita dapat memanggil atau menggunakannya dalam query. Berikut ini beberapa contoh penggunaan fungsi tersebut beserta hasilnya:
mysql> SELECT toRoman(54), toRoman(125), toRoman(1025);
+-------------+--------------+---------------+
| toRoman(54) | toRoman(125) | toRoman(1025) |
+-------------+--------------+---------------+
| LIV         | CXXV         | MXXV          |
+-------------+--------------+---------------+
1 row in set (0.00 sec)
Semoga postingan ini bermanfaat bagi kita semua.

Tidak ada komentar