Sha256 имеет длину 256 бит - как видно из его названия.
Если вы используете шестнадцатеричное представление, каждая цифра кодирует 4 бита; поэтому вам нужно 64 цифры для представления 256 битов - вам нужно varchar(64)
или char(64)
, так как длина всегда одна и та же, совсем не меняется.
И демоверсия:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Даст вам:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
т.е. строка из 64 символов.