Proper Case di MySQL

Sial, tester gw ngisi inputan iseng bangedd : kya gini nih :

a qUicK BRowN fOx jUmPs oVeR biLl

Selaku penanggung jawab data(base), tentunya gw gag pengen inputan asal kya gtu lulus sensor n masuk ke tabel gw. Klo di VB, gw pernah bikin function PCase (singkatan dari ProperCase) yang fungsinya bakal 'menyesuaikan paksa' string ini (a qUicK BRowN fOx jUmPs oVeR biLl) menjadi ini (A Quick Brown Fox Jumps Over Bill). Berikut ini potongan function gw di VB :

Public Function PCase(ByVal strKalimat As String) As String
 PCase = StrConv(strKalimat, vbProperCase)
End Function

Nah, masalahnya gw ngga ndevelop di VB. Dan gw masih belum percaya ama programmer-programmer PHP gw (hihihihi...) ~ gw pengen bikin stored functionnya di MySQL. Yaa, itung-itung ngelengkapin koleksi String Function di MySQL lah.. masa udah ada LCASE() dan UCASE() tapi utk bikin Proper Case ngga ada...

Setelah sedikit googling dan obok-obok algoritma dikit, gw berhasil "meramu" stored function untuk ngonvert string menjadi proper-case. Silakan simak functionnya di bawah ini :


-- Function "xf_propercase" DDL

CREATE FUNCTION `xf_propercase`(str varchar(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
 DECLARE c CHAR(1);
 DECLARE s VARCHAR(128);
 DECLARE i INT DEFAULT 1;
 DECLARE bool INT DEFAULT 1;
 DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/';

 SET s = LCASE( str );
 WHILE i < LENGTH( str ) DO
 BEGIN
  SET c = SUBSTRING( s, i, 1 );
  IF LOCATE( c, punct ) > 0 THEN
   SET bool = 1;
  ELSEIF bool=1 THEN
   BEGIN
    IF c >= 'a' AND c <= 'z' THEN
     BEGIN
      SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
      SET bool = 0;
     END;
    ELSEIF c >= '0' AND c <= '9' THEN
     SET bool = 0;   
    END IF;
   END;
  END IF;
  SET i = i+1;
 END;
 END WHILE;
RETURN s;
END;

nah, klo kita coba panggil ntu function, caranya gini :

mysql> select xf_propercase('a qUicK BRowN fOx jUmPs oVeR biLl');
+----------------------------------------------------+
| xf_propercase('a qUicK BRowN fOx jUmPs oVeR Bill') |
+----------------------------------------------------+
| A Quick Brown Fox Jumps Over Bill                  |
+----------------------------------------------------+
1 row in set


SUKSES!! cihuyy....
_______________________


Rizky Prihanto
Software Architect PT Cinox Media Insani

2 komentar:

  1. store functionnya disimpan di directori apa bos?
    ane pake xampp for windows.
    thx. before.

    BalasHapus
  2. apakah store function tersbt disimpan dalam php dan kemudian dipanggil dalam mysql apa bagaimana pak rizky?
    mohon bantuannya. terima kasih.
    m.khariri@yahoo.coi.d

    BalasHapus