Есть ли в MySQL недопустимые символы, которые нельзя хранить в поле? - PullRequest
0 голосов
/ 27 января 2012

Я ищу сокращенное решение для хранения хеша md5 внутри таблицы MySQL в виде строковых данных.У меня была идея, что base256 может уменьшить длину строки вдвое, до 16-значной строки вместо 32-х шестнадцатеричной.Поэтому я беру гекс и делю его на куски по две цифры программно, а затем преобразую каждый набор из двух цифр в ASCII.Например:

4cf5f5941a02573dc007e60442f5358a

сокращено до

Lõõ”W=ÀæBõ5Š

, и это нормально, если эти символы не печатают должным образом - мне просто нужно сохранить их.Примет ли MySQL данные ASCII такого рода в текстовое поле без жалоб?

1 Ответ

1 голос
/ 27 января 2012

MySQL примет эти значения, но вы должны быть очень осторожны при их написании - я настоятельно рекомендую привязывать параметры.

Возможно, вы захотите рассмотреть COMPRESS() и UNCOMPRESS() в качестве альтернативы:

INSERT INTO ... SET hashcode=COMPRESS('4cf5f5941a02573dc007e60442f5358a');

и

SELECT UNCOMPRESS(hashcode) AS hashcode FROM ... WHERE 

могут сделать трюк более читабельным

...