2014-09-09 5 views
1

При каких обстоятельствах MySQL будет преобразовывать типы в TINYINT? Я знаю, что тип BOOL или BOOLEAN в mysql DDL автоматически преобразуется в TINYINT (1) для true или false. Я анализирую базу данных, которая имеет тип varchar (16) для поля в одной таблице и tinyint (4) в том же поле в другой таблице? Например, t1.name varchar (15) и t2.name tinyint (4), где t1.name = t2.name.Преобразование MySQL в TINYINT

+1

Очень плохой выбор для условия «join». Типы должны быть одинаковыми. –

+0

Но может быть, это может быть третья таблица unkown, которая, возможно, присоединяется к табличным таблицам косвенно, напрямую присоединяясь к t2.name, например, создает таблицу t3 (id ... PK, ws_connect tinyint (4), имя varchar (16)) ;? –

ответ

1

Не полагайтесь на неявного типа, делать анализ типов данных вручную:

Сначала давайте посмотрим, что думает MySQL как лучший Col-типа для ваших данных. Побегайте

SELECT * FROM table PROCEDURE Analyse() 

Анализ данных в дальнейшем, говоря

SELECT * FROM table WHERE varcharCol NOT REGEXP '^[0-9].*$' 

Чтобы получить все не-числовые значения в varcharCol. Если нет, то вам, наконец, придется проверять диапазоны значений разных типов MySQL here.

Тогда вы готовы к конвертации своего varcharCol, например. к TINYINT.

Смежные вопросы