Files
SQL/CISTOOLS/Functions/GET_CAMEL_CASE.sql

57 lines
1.5 KiB
SQL

SET PATH *LIBL ;
CREATE OR REPLACE FUNCTION CISTOOLS.GET_CAMEL_CASE (
INSTRING VARCHAR(528) )
RETURNS VARCHAR(528)
LANGUAGE SQL
SPECIFIC CISTOOLS.GET_CAMEL_CASE
DETERMINISTIC
READS SQL DATA
CALLED ON NULL INPUT
NO EXTERNAL ACTION
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DECRESULT = (31, 31, 00) ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
BEGIN
DECLARE V_WORKSTR VARCHAR ( 528 ) ;
DECLARE V_RESULT VARCHAR ( 528 ) ;
-- Normalize to lowercase and replace separators with spaces
SET V_WORKSTR = LOWER (
REGEXP_REPLACE (
TRIM ( CAST ( INSTRING AS VARCHAR ( 528 ) CCSID 37 ) ) ,
'(_|-|\\.|\\s)+' , ' ' ) ) ;
-- Capitalize each word
SET V_RESULT = (
SELECT TRIM (
LISTAGG (
UPPER ( LEFT ( TRIM ( ELEMENT ) , 1 ) ) ||
SUBSTR ( TRIM ( ELEMENT ) , 2 ) , '' )
WITHIN GROUP ( ORDER BY ORDINAL_POSITION ) )
FROM TABLE (
SYSTOOLS . SPLIT ( V_WORKSTR , ' ' )
)
WHERE TRIM ( ELEMENT ) <> '' ) ;
-- Make first character lowercase
SET V_RESULT = LOWER ( LEFT ( V_RESULT , 1 ) ) || SUBSTR ( V_RESULT , 2 ) ;
RETURN TRIM ( V_RESULT ) ;
END ;
COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.GET_CAMEL_CASE
( INSTRING IS 'In String' ) ;
LABEL ON SPECIFIC FUNCTION CISTOOLS.GET_CAMEL_CASE
IS 'Get Camel Case' ;
GRANT ALTER , EXECUTE
ON SPECIFIC FUNCTION CISTOOLS.GET_CAMEL_CASE
TO AMAPICS WITH GRANT OPTION ;
GRANT EXECUTE
ON SPECIFIC FUNCTION CISTOOLS.GET_CAMEL_CASE
TO PUBLIC ;