Присоединение к столбцам разного типа? - PullRequest
3 голосов
/ 07 августа 2009

Если один столбец имеет тип int и, скажем, имеет значение 10. Другой столбец имеет тип varchar и имеет значение '10'. Безопасно ли объединять эти значения (mySql) и получу ли я такой же результат, как если бы оба имели тип int и значение 10?

Мне нужно, чтобы они были разных типов, потому что в одной таблице столбец является автоинкрементным ключом (поэтому он должен быть int). Другой столбец (в другой таблице) может иногда содержать значения с буквами, поэтому я должен сделать его varchar. Можете ли вы предвидеть какие-либо огромные проблемы с этим, или, может быть, я должен переосмыслить свою схему?

Ответы [ 2 ]

2 голосов
/ 07 августа 2009

У этого подхода есть две проблемы:

  1. MySQL не будет использовать индексы для такого объединения - что может или не может быть огромной проблемой в зависимости от ваших обстоятельств (размер таблицы / запрос / и т.д. ...)

  2. При проектировании базы данных это пахнет подозрительно. Возможно, это мое слабое воображение :-), но я не могу придумать пример, где что-то подобное будет оправданным. Если это первичный ключ в одной таблице, это должен быть внешний ключ в другой. Можете ли вы объяснить, что вы пытаетесь сделать более подробно?

1 голос
/ 07 августа 2009

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

На основании вашего описания вам нужно будет преобразовать тип данных int в varchar, прежде чем вы сделаете сравнение. Позаботьтесь о том, чтобы обрезать пробелы и будьте внимательны, если на вашем БД установлена ​​заглавная буква. Кроме того, сравнения int намного быстрее, чем сравнения varchar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...