SELECT column1, IFF(column1, UPPER(SUBSTRING(column2,1,1)) || LOWER(SUBSTRING(column2,2)), column2)
FROM VALUES
(true,'all_lower'),
(true, 'ALL_UPPER'),
(true, 'mIxEd'),
(false,'all_lower'),
(false, 'ALL_UPPER'),
(false, 'mIxEd');
which can be unpacked a little to see the parts at work.
SELECT column1 as flag
,column2 as orig
,UPPER(SUBSTRING(column2,1,1)) || LOWER(SUBSTRING(column2,2)) as first_upper
,IFF(flag, first_upper, orig)
FROM VALUES
(true,'all_lower'),
(true, 'ALL_UPPER'),
(true, 'mIxEd'),
(false,'all_lower'),
(false, 'ALL_UPPER'),
(false, 'mIxEd');
which gives:
FLAG ORIG FIRST_UPPER IFF(FLAG, FIRST_UPPER, ORIG)
TRUE all_lower All_lower All_lower
TRUE ALL_UPPER All_upper All_upper
TRUE mIxEd Mixed Mixed
FALSE all_lower All_lower all_lower
FALSE ALL_UPPER All_upper ALL_UPPER
FALSE mIxEd Mixed mIxEd