PostgreSQL에서 한글 단어에 대해 초성을 얻는 방법입니다.
prepare 초성(text) as select case octet_length($1::char(1)) when 3 then case ((((get_byte(decode($1::char(1), 'escape'), 0) & 15) << 12) | ((get_byte(decode($1::char(1), 'escape'), 1) & 63) << 6) | ((get_byte(decode($1::char(1), 'escape'), 2) & 63))) - 44032) / 588 when 0 then E'\xe3\x84\xb1' when 1 then E'\xe3\x84\xb2' when 2 then E'\xe3\x84\xb4' when 3 then E'\xe3\x84\xb7' when 4 then E'\xe3\x84\xb8' when 5 then E'\xe3\x84\xb9' when 6 then E'\xe3\x85\x81' when 7 then E'\xe3\x85\x82' when 8 then E'\xe3\x85\x84' when 9 then E'\xe3\x85\x85' when 10 then E'\xe3\x85\x86' when 11 then E'\xe3\x85\x87' when 12 then E'\xe3\x85\x88' when 13 then E'\xe3\x85\x89' when 14 then E'\xe3\x85\x8a' when 15 then E'\xe3\x85\x8b' when 16 then E'\xe3\x85\x8c' when 17 then E'\xe3\x85\x8d' when 18 then E'\xe3\x85\x8e' when -53 then $1::char(1) else '??' end else $1::char(1) end as initial;
실행은 execute 명령을 활용하며 예를 들어 아래와 같습니다.
execute 초성('가나다');
결과는 'ㄱ'으로 나옵니다.