t_wの輪郭

あれ
正規表現でひらがな判定SQLでひらがなをカタカナに変換するやつあれひらがなの複合による漢字化ひらがなの部品化
WITH hira_to_kata as MATERIALIZED (
					SELECT hira, kata
					FROM (
						SELECT 'あ' as hira, 'ア' as kata
						UNION SELECT 'い' as hira, 'イ' as kata
						UNION SELECT 'う' as hira, 'ウ' as kata
						UNION SELECT 'え' as hira, 'エ' as kata
						UNION SELECT 'お' as hira, 'オ' as kata
						UNION SELECT 'か' as hira, 'カ' as kata
						UNION SELECT 'き' as hira, 'キ' as kata
						UNION SELECT 'く' as hira, 'ク' as kata
						UNION SELECT 'け' as hira, 'ケ' as kata
						UNION SELECT 'こ' as hira, 'コ' as kata
						UNION SELECT 'さ' as hira, 'サ' as kata
						UNION SELECT 'し' as hira, 'シ' as kata
						UNION SELECT 'す' as hira, 'ス' as kata
						UNION SELECT 'せ' as hira, 'セ' as kata
						UNION SELECT 'そ' as hira, 'ソ' as kata
						UNION SELECT 'た' as hira, 'タ' as kata
						UNION SELECT 'ち' as hira, 'チ' as kata
						UNION SELECT 'つ' as hira, 'ツ' as kata
						UNION SELECT 'て' as hira, 'テ' as kata
						UNION SELECT 'と' as hira, 'ト' as kata
						UNION SELECT 'な' as hira, 'ナ' as kata
						UNION SELECT 'に' as hira, 'ニ' as kata
						UNION SELECT 'ぬ' as hira, 'ヌ' as kata
						UNION SELECT 'ね' as hira, 'ネ' as kata
						UNION SELECT 'の' as hira, 'ノ' as kata
						UNION SELECT 'は' as hira, 'ハ' as kata
						UNION SELECT 'ひ' as hira, 'ヒ' as kata
						UNION SELECT 'ふ' as hira, 'フ' as kata
						UNION SELECT 'へ' as hira, 'ヘ' as kata
						UNION SELECT 'ほ' as hira, 'ホ' as kata
						UNION SELECT 'ま' as hira, 'マ' as kata
						UNION SELECT 'み' as hira, 'ミ' as kata
						UNION SELECT 'む' as hira, 'ム' as kata
						UNION SELECT 'め' as hira, 'メ' as kata
						UNION SELECT 'も' as hira, 'モ' as kata
						UNION SELECT 'や' as hira, 'ヤ' as kata
						UNION SELECT 'ゆ' as hira, 'ユ' as kata
						UNION SELECT 'よ' as hira, 'ヨ' as kata
						UNION SELECT 'ら' as hira, 'ラ' as kata
						UNION SELECT 'り' as hira, 'リ' as kata
						UNION SELECT 'る' as hira, 'ル' as kata
						UNION SELECT 'れ' as hira, 'レ' as kata
						UNION SELECT 'ろ' as hira, 'ロ' as kata
						UNION SELECT 'わ' as hira, 'ワ' as kata
						UNION SELECT 'を' as hira, 'ヲ' as kata
						UNION SELECT 'ん' as hira, 'ン' as kata
						UNION SELECT 'ー' as hira, 'ー' as kata

						UNION SELECT 'が' as hira, 'ガ' as kata
						UNION SELECT 'ぎ' as hira, 'ギ' as kata
						UNION SELECT 'ぐ' as hira, 'グ' as kata
						UNION SELECT 'げ' as hira, 'ゲ' as kata
						UNION SELECT 'ご' as hira, 'ゴ' as kata

						UNION SELECT 'ざ' as hira, 'ザ' as kata
						UNION SELECT 'じ' as hira, 'ジ' as kata
						UNION SELECT 'ず' as hira, 'ズ' as kata
						UNION SELECT 'ぜ' as hira, 'ゼ' as kata
						UNION SELECT 'ぞ' as hira, 'ゾ' as kata

						UNION SELECT 'だ' as hira, 'ダ' as kata
						UNION SELECT 'ぢ' as hira, 'ヂ' as kata
						UNION SELECT 'づ' as hira, 'ヅ' as kata
						UNION SELECT 'で' as hira, 'デ' as kata
						UNION SELECT 'ど' as hira, 'ド' as kata

						UNION SELECT 'ば' as hira, 'バ' as kata
						UNION SELECT 'び' as hira, 'ビ' as kata
						UNION SELECT 'ぶ' as hira, 'ブ' as kata
						UNION SELECT 'べ' as hira, 'ベ' as kata
						UNION SELECT 'ぼ' as hira, 'ボ' as kata

						UNION SELECT 'ぱ' as hira, 'パ' as kata
						UNION SELECT 'ぴ' as hira, 'ピ' as kata
						UNION SELECT 'ぷ' as hira, 'プ' as kata
						UNION SELECT 'ぺ' as hira, 'ペ' as kata
						UNION SELECT 'ぽ' as hira, 'ポ' as kata
					)
				),

使い方はこうでござる。
いや、まあ、うん、普通にプログラム書けってかんじだ。

WITH RECURSIVE kata as (
					SELECT
						'' as kata,
						0 as index

					UNION

					SELECT
						CONCAT(kata.kata, hira_to_kata.kata) as kata,
						kata.index + 1 as index
					FROM given, kata, hira_to_kata
					WHERE true
						AND given.text[kata.index + 1] = hira_to_kata.hira
				)

SELECT kata
			FROM kata, given
			WHERE true
				AND kata.index = LENGTH(given.text)