mysql强转字符_MYSQL字符串强转的方法示例

3a2c5c47719654b2eb3ed26ac95e70d8.png

前言

由于两个表同一字段类型不一样,甚至是编码类型不一样也会导致查询不走索引,速度会很慢。

强转

直接举例说明:

A 表id是int 类型 B表id是 char 类型

如果要转为int 则是signed

如果要转为char 则是char

注意:需转换的类型必须是left join 后表的字段,否则不走索引

因为联表字段类型不一致,所以不走索引

select t.* from A tleft join B t1 on t.id = t1.id

第一种转换类型

select t.* from A tleft join B t1 on t.id = cast(t1.id as signed)

第二种转化类型

select t.* from A tleft join B t1 on t.id =convert(t1.id,signed)

a.b=f.g

但是这两个字段b和g属于不同的排序规则,b是utf8_general_ci,而g是utf8_unicode_ci,他两相等sql就会报错,于是我请教了上级,写法是:

CONVERT (a.b USING utf8) COLLATE utf8_unicode_ci =f.g

如果这样连表还不走索引,字段放在查询里面转型,例如:

select a.* from a

left join (select b.*,CONVERT (a.b USING utf8) COLLATE utf8_unicode_ci =f.gfrom b) a on a.b = f.g

CONVERT(user_id USING utf8) COLLATE utf8_general_ci as user_id

到此这篇关于MYSQL字符串强转的文章就介绍到这了,更多相关MYSQL字符串强转内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值