如果一列的类型为int,并且say的值为10.另一列的类型为varchar,其值为“10”。加入这些值(mySql)是否安全,并且我会得到相同的结果,就好像它们都是int类型和值10一样?
我需要让它们具有不同的类型,因为在一个表中,该列是一个自动增量键(因此它必须是int)。另一列(在不同的表中)可能偶尔包含带字母的值,因此我必须将其设为varchar。你能预见到这方面的任何重大问题,或者我应该重新考虑我的架构吗?
答案 0 :(得分:2)
这种方法存在两个问题:
MySQL不会在这种连接上使用索引 - 根据您的具体情况(表格大小/查询/等等),这可能是也可能不是很大的交易。
数据库设计方面,这闻起来很腥。也许这是我糟糕的想象力:-)但我想不出一个例子,这样的事情是合理的。如果它是一个表中的主键,则它应该是另一个表中的外键。你能更详细地解释一下你想要做什么吗?
答案 1 :(得分:0)
只要您明确转换数据,以便比较最终以相同的数据类型完成,您应该没问题。
根据您的描述,您需要在进行比较之前将int数据类型转换为varchar。如果你的数据库设置了大写,请注意修剪空白并注意。另外 - int比较比varchar比较快得多。