MySQL相互关联的两张表,而关联字段的类型不一致如何处理?

885 阅读1分钟

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

CAST(value as type);
 
CONVERT(value, type);

二进制,同带binary前缀的效果 : BINARY    可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

字符型,可带参数 : CHAR()     
日期 : DATE     
时间: TIME     
日期时间型 : DATETIME     
浮点数 : DECIMAL      
整数 : SIGNED     
无符号整数 : UNSIGNED 

例子:

简介: product_cat_rank表live_id是int类型, user_permission表access_key是char类型, 上述两张表通过live_id和access_key字段进行关联。

# vup.access_key是字符串类型 关联 dlpcrd.live_id是int类型
select dlpcrd.id, vup.id from product_cat_rank dlpcrd 
join user_permission vup on vup.access_key = cast(dlpcrd.live_id as char)
where vup.access_key = '1234';

# vup.access_key是字符串类型 关联 dlpcrd.live_id是int类型
select dlpcrd.id, vup.id from product_cat_rank dlpcrd 
join user_permission vup on vup.access_key = convert(dlpcrd.live_id, char)
where vup.access_key = '1234';