пятница, 11 ноября 2011 г.

MySQL: как убрать NUL в конце строк

Проблема: 
при переносе БД из другой СУБД в конце всех перенесенных varchar-строк оказался символ NUL (или "00" в шестнадцатеричном представлении, что является символом конца строки, например, в С, но в БД этот лишний байт вовсе не нужен).
Решение:
Решается проблема простым UPDATE`ом, который удалит лишний байт в конце всех строк, если он там есть (строки расположены в столбце brand таблицы manufacturers):

UPDATE `manufacturers`
SET brand=SUBSTRING(brand,1,CHAR_LENGTH(brand)-1)
WHERE HEX(SUBSTRING(brand FROM CHAR_LENGTH(brand)))='00'

Комментариев нет:

Отправить комментарий