LIKE admite la coincidencia de patrones usando _ para cualquier carácter único y % para cualquier secuencia de caracteres así:
SELECT 'thomas' LIKE '%(h|x)%'
no funciona porque LIKE no entiende (...) para agrupar o | para la alternancia, esos son solo caracteres literales en un patrón LIKE.
SIMILAR A admite _ y % lo mismo que LIKE pero agrega agrupación con (...) , alternancia con | , y algunas otras cosas así que esto:
SELECT 'thomas' SIMILAR TO '%(h|x)%'
funciona como se esperaba.
~* usa expresiones regulares POSIX así que (...) es para agrupar y | es para alternancia pero % es solo un signo de porcentaje; eso significa que esto:
SELECT 'thomas' ~* '%(h|x)%'
está buscando una h o x rodeado de signos de porcentaje y no funciona de la forma esperada.
Tu ~* La versión funcionará si usa una expresión regular adecuada como:
SELECT 'thomas' ~* '(h|x)' -- alternation
SELECT 'thomas' ~* 'h|x' -- alternation without an unnecessary grouping
SELECT 'thomas' ~* '[hx]' -- or a character class
La documentación vinculada anteriormente cubre todo esto.