Bismillah
Ini beberapa trick Function mySQL yang digunakan di project yang gw kerjakan untuk mempermudah dikonsumsi oleh Frontend.
JSON Extract
CREATE DEFINER=`namaUser`@`%` FUNCTION `namaDatabase`.`json_extract_c`( details TEXT, required_field VARCHAR (255) ) RETURNS text CHARSET latin1 BEGIN SET details = TRIM(LEADING '{' FROM TRIM(details)); SET details = TRIM(TRAILING '}' FROM TRIM(details)); RETURN TRIM( BOTH '"' FROM SUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING_INDEX( details, CONCAT( '"', SUBSTRING_INDEX(required_field,'$.', - 1), '":' ), - 1 ), ',"', 1 ), ':', -1 ) ) ; END
JSON Extract with Datetime
CREATE DEFINER=`namaUser`@`%` FUNCTION `namaDatabase`.`json_extract_d`(details TEXT,required_field VARCHAR (255)) RETURNS text CHARSET latin1 DETERMINISTIC BEGIN /* get key from function passed required field value */ set @JSON_key = SUBSTRING_INDEX(required_field,'$.', -1); /* get everything to the right of the 'key =' */ set @JSON_entry = SUBSTRING_INDEX(details,CONCAT('"', @JSON_key, '"'), -1 ); /* get everything to the left of the trailing comma */ set @JSON_entry_no_trailing_comma = SUBSTRING_INDEX(@JSON_entry, ",", 1); /* get everything to the right of the leading colon after trimming trailing and leading whitespace */ set @JSON_entry_no_leading_colon = TRIM(LEADING ':' FROM TRIM(@JSON_entry_no_trailing_comma)); /* trim off the leading and trailing double quotes after trimming trailing and leading whitespace*/ set @JSON_extracted_entry = TRIM(BOTH '"' FROM TRIM(@JSON_entry_no_leading_colon)); RETURN @JSON_extracted_entry; RETURN 1; END
Bulan Indonesia
CREATE DEFINER=`namaUser`@`%` FUNCTION `namaDatabase`.`bulan_indonesia`(bulan INT) RETURNS varchar(255) CHARSET latin1 DETERMINISTIC BEGIN DECLARE varhasil VARCHAR(255); SELECT CASE (bulan) WHEN 1 THEN 'Januari' WHEN 2 THEN 'Februari' WHEN 3 THEN 'Maret' WHEN 4 THEN 'April' WHEN 5 THEN 'Mei' WHEN 6 THEN 'Juni' WHEN 7 THEN 'Juli' WHEN 8 THEN 'Agustus' WHEN 9 THEN 'September' WHEN 10 THEN 'Oktober' WHEN 11 THEN 'November' WHEN 12 THEN 'Desember' END INTO varhasil; RETURN varhasil; END
Find Strip Tags
CREATE DEFINER=`namaUser`@`%` FUNCTION `namaDatabase`.`fnStripTags`( Dirty varchar(4000) ) RETURNS varchar(4000) CHARSET latin1 DETERMINISTIC BEGIN DECLARE iStart, iEnd, iLength int; WHILE Locate( '<', Dirty ) > 0 And Locate( '>', Dirty, Locate( '<', Dirty )) > 0 DO BEGIN SET iStart = Locate( '<', Dirty ), iEnd = Locate( '>', Dirty, Locate('<', Dirty )); SET iLength = ( iEnd - iStart) + 1; IF iLength > 0 THEN BEGIN SET Dirty = Insert( Dirty, iStart, iLength, ''); END; END IF; END; END WHILE; RETURN Dirty; END