De qual banco estamos falando?
Acredito ser MySQL, pois outros bancos não possuem esta função. Por exemplo, em Oracle as funções para manipular JSON são diferentes, o mesmo para PostgreSQL.
Enfim, segundo a documentação do MySQL, o operador ->
é um alias para JSON_EXTRACT()
, quando chamada com 2 argumentos.
Sim, porque você pode chamar JSON_EXTRACT()
com mais que 2 argumentos. Na própria documentação tem este exemplo:
SELECT JSON_EXTRACT('[10, 20, [30, 40]]', '$[1]', '$[0]');
Que no caso retorna [20, 10]
, pois os argumentos '$[1]'
e '$[0]'
são agrupados no resultado final. Com ->
não é possível, pois ele só aceita um operando à direita.
Outra diferença é que o operador ->
só aceita identificadores de coluna como primeiro operando, enquanto JSON_EXTRACT
aceita qualquer expressão que resulte em um JSON válido.