MYSQL字符串强转的方法示例

前言

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

强转

直接举例说明:

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.g from b) a on a.b = f.g

CONVERT(user_id  USING utf8) COLLATE utf8_general_ci as user_id

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

(0)

相关推荐

  • mysql字符串的‘123’转换为数字的123的实例

    方法一:SELECT CAST('123' AS SIGNED); 方法二:SELECT CONVERT('123',SIGNED); 方法三:SELECT '123'+0; 以上这篇mysql字符串的'123'转换为数字的123的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串

    数据库脚本: -- -------------------------------------------------------- -- -- 表的结构 `highot_attachment` -- 复制代码 代码如下: CREATE TABLE IF NOT EXISTS `highot_attachment` ( `id` int(11) NOT NULL auto_increment, `phone_number_id` int(11) NOT NULL COMMENT 'phone_n

  • 详解MySQL日期 字符串 时间戳互转

    平时比较常用的时间.字符串.时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法:本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串.date转时间戳.字符串转date.字符串转时间戳.时间戳转date,时间戳转字符串)用法,方便日后查看: 涉及的函数 date_format(date, format) 函数,MySQL日期格式化函数date_format() unix_timestamp() 函数 str_to_date(str, format) 函数 fro

  • MYSQL字符串强转的方法示例

    前言 由于两个表同一字段类型不一样,甚至是编码类型不一样也会导致查询不走索引,速度会很慢. 强转 直接举例说明: 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

  • php分页查询mysql结果的base64处理方法示例

    本文实例讲述了php分页查询mysql结果的base64处理方法.分享给大家供大家参考,具体如下: public function public_about(){ $sql= "SELECTc.catid,c.catname,c.catdir,FROM_BASE64(p.content) FROM v9_page p JOINv9_category c ON c.catid=p.catid WHERE c.parentdir = 'jmwm/'"; if(isset($_REQUEST

  • PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】

    本文实例讲述了PHP操作MySQL中BLOB字段的方法.分享给大家供大家参考,具体如下: 1.MySQL中BLOB字段类型 BLOB类型的字段用于存储二进制数据. MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型 TinyBlob:  最大 255字节 Blob:      最大 65K MediumBlob:最大 16M LongBlob:  最大

  • Java实现去掉字符串重复字母的方法示例

    本文实例讲述了Java实现去掉字符串重复字母的方法.分享给大家供大家参考,具体如下: package demo; public class Ctrl { public static void main(String[] args){ String s = "akkbcccrsa"; System.out.println("我们测试结果:"); System.out.print("原字符串:"); System.out.println(s); Ct

  • MySQL 字符串转换为数字的方法小结

    方法一:直接 加 0select '123' + 0 方法二:函数 convert语法:convert (value, type);type可以为: decimal 浮点数 signed 整数 unsigned 无符号整数 select convert('123',signed) 方法三:函数 cast语法:cast (value as type); type可以为: decimal 浮点数 signed 整数 unsigned 无符号整数 select cast('123' as signed

  • Python实现对字符串的加密解密方法示例

    本文实例讲述了Python实现对字符串的加密解密方法.分享给大家供大家参考,具体如下: 需求是是要将密码存在数据库里,所以要加密解密是可逆的,在数据库里不要有特殊字符,防止数据库备份和恢复中出错. 安装PyCrypto,可以用AES和DES.我使用DES加解密.加密后将密文转为16进制,在入库.测试代码如下. ; html-script: false ]#!/bin/python #-*- coding:utf-8 -*- # Filename: # Revision: # Date: 2013

  • Python中用字符串调用函数或方法示例代码

    前言 本文主要给大家介绍了关于Python用字符串调用函数或方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 先看一个例子: >>> def foo(): print "foo" >>> def bar(): print "bar" >>> func_list = ["foo","bar"] >>> for func in func_li

  • nodejs实现解析xml字符串为对象的方法示例

    本文实例讲述了nodejs实现解析xml字符串为对象的方法.分享给大家供大家参考,具体如下: var xmlreader = require("xmlreader"); var fs = require("fs"); var xml_string = '<response id="1" shop="aldi">' + 'This is some other content' + '<who name=&quo

  • mysql 触发器创建与使用方法示例

    本文实例讲述了mysql 触发器创建与使用方法.分享给大家供大家参考,具体如下: 什么是触发器 触发器用来在某些操作之后/之前,"自动"执行一些操作.(比如插入了新的学生信息,那么在班级表中应该修改学生数). 当insert delete update设置触发器之后,执行insert delete update操作就会自动触发设置的内容. 一张表最大能有6个触发器(3*2,三种操作*两种时间(before|after)). 创建触发器  语法: create trigger 触发器名

  • Java通过正则表达式获取字符串中数字的方法示例

    前言 本文通过一个小范例来学习java中通过正则表达式如何获得一个字符串中的数字,下面话不多说,来看看详细的介绍吧. 示例代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { String strInput = "3a7s10@5d2a6s17s56;33"; String reg

随机推荐