精华内容
下载资源
问答
  • MySQL隐式转换
    2021-11-13 22:53:40

    当我们对不同类型的值进行比较的时候,为了使得这些数值「可比较」(也可以称为类型的兼容性),MySQL会做一些隐式转化(Implicit type conversion)。

    • 若字符串是以数字开头,且全部都是数字,则转换为数字结果是整个字符串,部分是数字,则转换为数字结果是截止到第一个不是数字的字符为止。
    • 若字符串不是以数字开头,则转换为数字结果是0。

    理解:
    varchar str = “123dafa”,转换为数字是123
    SELECT ‘123dafa’ + 1; -> 124
    varchar str = “aabb33”,转换为数字是0
    SELECT ‘aabb33’ + 100; -> 100

    比如下面的例子:
    SELECT 1+‘1’; -> 2
    SELECT CONCAT(2,’ test’); -> ‘2 test’
    很明显,上面的SQL语句的执行过程中就出现了隐式转化。并且从结果们可以判断出,第一条SQL中,将字符串的“1”转换为数字1,而在第二条的SQL中,将数字2转换为字符串“2”。
    MySQL也提供了CAST()函数。我们可以使用它明确的把数值转换为字符串。当使用CONCAT()函数的时候,也可能会出现隐式转化,因为它希望的参数为字符串形式,但是如果我们传递的不是字符串呢:
    SELECT 38.8, CAST(38.8 AS CHAR); -> 38.8, ‘38.8’
    SELECT 38.8, CONCAT(38.8); -> 38.8, ‘38.8’

    隐式转换规则

    官方文档中关于隐式转化的规则是如下描述的:

    • 两个参数至少有一个是NULL时,比较的结果也是NULL,例外是使用<=>对两个NULL做比较时会返回1,这两种情况都不需要做类型转换;
    • 两个参数都是字符串,会按照字符串来比较,不做类型转换;
    • 两个参数都是整数,按照整数来比较,不做类型转换;
    • 十六进制的值和非数字做比较时,会被当做二进制串;
    • 有一个参数是TIMESTAMP或DATETIME,并且另外一个参数是常量,常量会被转换为timestamp;
    • 有一个参数是decimal类型,如果另外一个参数是decimal或者整数,会将整数转换为decimal后进行比较,如果另外一个参数是浮点数,则会把decimal转换为浮点数进行比较;
    • 所有其他情况下,两个参数都会被转换为浮点数再进行比较。

    归纳总结

    • MySQL隐式转换问题,隐藏的深,不容易被发现,在进行delete、update等操作时,一不小心很容易大问题,从而造成事故;
    • 对于delete、update等操作时,建议先使用select语句,看看获取的结果和预期的是否一致,再进行操作,相对会更安全一些。
    更多相关内容
  • 写这篇文章的时候,还真不知道如何取名,也不知道这个该如何将其归类。这个是同事遇到的一个案例,案例比较复杂,这里抽丝剥茧,仅仅...SELECT GOOD_TYPE, CASE WHEN ( GOOD_TYPE = 'T1' ) THEN 99.1 + SUM(GOOD_WEIG
  • 工作过程中会遇到比较多关于隐式转换的案例,隐式转换除了会导致慢查询,还会导致数据不准。本文通过几个生产中遇到的案例来。 基础知识 关于比较运算的原则,MySQL官方文档的描述: ...
  • Spark隐式转换

    2021-05-25 11:50:09
    隐式转换开荒2.1 隐式转换函数 参数RichFile2.2 隐式类2.3 隐式解析机制三.回归主题 一. 生产问题背景 如上就是此blog产生的背景, Spark SQL 中, DF.select() select 报错 不能导入 spark sql Cannot resolve...

    一. 生产问题背景

    在这里插入图片描述
    如上就是此blog产生的背景,

    Spark SQL 中,
    	DF.select()
    
    select 报错 不能导入
    	spark sql Cannot resolve overloaded method 'select'
    
    咨询大佬后,隐式转换的原因 ,导入Spark的隐式转换后即可
    	import spark.implicits._
    

    二. 隐式转换开荒

    在这里插入图片描述

    没有隐式转换,只能从 精度较高的----->精度低的

    在这里插入图片描述
    但是从 精度低-----> 精度高的。就会报错

    在这里插入图片描述

    2.1 隐式转换函数 参数

    解决方案就是自己定义一个隐式转换函数,double2int。这个隐士函数的功能也需要是唯一的

    用强转换也行,那隐士转换可有可无?

    RichFile
    import java.io.File
    import scala.io.Source
    
    object implicit2 {
      def main(args: Array[String]): Unit = {
    
        //java.io.File 只封装了文件的元数据,文件内容必须通过IO
        //所以File 后无法直接获取context
        val context:String = new File("").readContext
      }
    
    }
    

    隐式转换更多的应用在此,想要实现File 后 直接获取readContext 必须自己封装这个方法,然后实现隐式转换

    object implicit2 {
      def main(args: Array[String]): Unit = {
        //声明隐式转换
        implicit def file2RichFile(file: File):RichFile = new RichFile(file)
        
    
        //java.io.File 只封装了文件的元数据,文件内容必须通过IO
        //所以File 后无法直接获取context
        val context:String = new File("").readContext
      }
    
    }
    
    class RichFile(file:File){
      //自己封装一个,让File后能readContext
      def readContext:String = {
        Source.fromFile(file).mkString
      }
    }
    

    整理一下这个流程:

    java.io.File 无 readContext方法
    	查找implicit函数
    		传入参数为File , 返回方法当中有没有一个方法为readcontext
    		以上匹配关系必须唯一
    	
    
    implicit def int2Date(int: Int):RichDate = new RichDate(int)
    
        val ago:String = "ago"
        val later:String = "later"
        val day2 = 2.days(ago)
    
    class RichDate(day:Int){
      def days(when : String) = {
        if("ago"==when)
          LocalDate.now().plusDays(-day).toString
        else if("later"==when)
          LocalDate.now().plusDays(day).toString
        else
          println("later or age error")
      }
    }
    

    2.2 隐式类

    在这里插入图片描述
    注意,隐式函数引用的时候,implict 关键字标黄了
    这是啥意思呢?

    这是在说:your code is as same sa the shit

    since Scala2.10

    再一次简化隐式转换,直接把类写在里面即可

    object implicit3 {
      def main(args: Array[String]): Unit = {
    
        val ago : String = "ago"
        val later : String = "later"
    
        println(3.days(later))
    
        implicit class RichDate(day:Int){
          def days(when:String): Unit ={
            if ("ago" == when){
              LocalDate.now().plusDays(-day).toString
            }else if("later" == when){
              LocalDate.now().plusDays(day).toString
            }
          }
        }
      }
    

    隐式类要求
    (1)其所带的构造参数有且只能有一个
    (2)隐式类必须被定义在“类”或“伴生对象”或“包对象”里,即隐式类不能是顶级的。

    2.3 隐式解析机制

    之前有一些提到,

    (1)首先会在当前代码作用域下查找隐式实体(隐式方法、隐式类、隐式对象)。(一般是这种情况)
    (2)如果第一条规则查找隐式实体失败,会继续在隐式参数的类型的作用域里查找。类型的作用域是指与该类型相关联的全部伴生对象以及该类型所在包的包对象

    三.回归主题

    开头提到 一个 DF.select

      /**
       * :: Experimental ::
       * (Scala-specific) Implicit methods available in Scala for converting
       * common Scala objects into `DataFrame`s.
       *
       * {{{
       *   val sparkSession = SparkSession.builder.getOrCreate()
       *   import sparkSession.implicits._
       * }}}
       *
       * @since 2.0.0
       */
      @Experimental
      @InterfaceStability.Evolving
      object implicits extends SQLImplicits with Serializable {
        protected override def _sqlContext: SQLContext = SparkSession.this.sqlContext
      }
    
      /**
       * Selects a set of column based expressions.
       * {{{
       *   ds.select($"colA", $"colB" + 1)
       * }}}
       *
       * @group untypedrel
       * @since 2.0.0
       */
      @scala.annotation.varargs
      def select(cols: Column*): DataFrame = withPlan {
        Project(cols.map(_.named), logicalPlan)
      }
    

    DF. 没有select
    需要用隐式转换成DS
    然后用ds.select

    展开全文
  • 隐式转换相关的文章,《从隐式转换案例,来挖掘开发人员的技能提升》《浅谈显式转换和隐式转换》《隐式转换的案例场景》我们知道,隐式转换是在开发过程中非常容易进的一种坑,最常见的就是程序中传参类...

    隐式转换相关的文章,

    从隐式转换案例,来挖掘开发人员的技能提升

    浅谈显式转换和隐式转换

    隐式转换的案例场景

    我们知道,隐式转换是在开发过程中非常容易进的一种坑,最常见的就是程序中传参类型和数据库表中定义的字段类型不一致,隐患就是不能用到隐式转换字段上的索引,原先能使用索引的语句,却使用了全表,影响执行性能。

    通常有以下三种场景可能出现隐式转换,

    场景1

    where varchar2=number,此时会在=左值使用to_number函数,谓词会显示TO_NUMBER(varchar2)=:1。

    场景2

    where varchar2=nvarchar2,此时会在=左值使用sys_op_c2c函数,谓词会出现SYS_OP_C2C(varchar2)=:1。

    可参考《一次有意思的错选执行计划问题定位》。

    场景3

    where date=timestamp,此时会在=左值使用internal_function函数,谓词会出现INTERNAL_FUNCTION(date)=:1。

    然而不是所有出现这些函数的场景都是因为隐式转换,例如这个SQL,

    SQL> select * from t1 where col in ('A','B','C') and id=1;
            ID COL
    ---------- ---------------
             1 A
    

    从执行计划的谓词信息中,可以看到,确实用到了INTERNAL_FUNCTION,但是和上述隐式转换的场景是不同的。这种IN多值的情况,算是一种“复杂”的复合谓词,如果用display_cursor显示执行计划,他是不知道怎么解释,因此用了INTERNAL_FUNCTION标识,

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |
    |*  1 |  TABLE ACCESS FULL| T1   |     1 |    15 |     3   (0)| 00:00:01 |
    --------------------------------------------------------------------------
    ...
    1 - filter((INTERNAL_FUNCTION("COL") AND "ID"=1))
    ...
    

    但是如果用explain plan的方式检索执行计划,就可以从谓词信息中看到,IN转换为OR,而不是出现INTERNAL_FUNCTION,

    --------------------------------------------------------------------------
    | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    --------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |      |     1 |    15 |     2   (0)| 00:00:01 |
    |*  1 |  TABLE ACCESS FULL| T1   |     1 |    15 |     2   (0)| 00:00:01 |
    --------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    ---------------------------------------------------
       1 - filter(("COL"='A' OR "COL"='B' OR "COL"='C') AND "ID"=1)
    

    因此不能单从谓词信息判断是否出现了隐式转换,还是存在一些前提条件的,我不确定是否存在其他更加隐蔽的场景。如果想从Oracle中找到出现了隐式转换并且对性能产生影响(之所以说”并且“,就是因为如果是=右值出现隐式转换,至少不会影响索引的使用)的SQL,单靠一条SQL,确实有些困难。

    因此我结合网上资料,设想了这种逻辑,

    1. v$sql_plan查询filter_predicates字段包含TO_NUMBER、SYS_OP_C2C、INTERNAL_FUNCTION谓词的,且options和operation存在TABLE ACCESS FULL的,例如,

    SELECT *
      FROM V$SQL_PLAN X
     WHERE (X.FILTER_PREDICATES LIKE '%INTERNAL_FUNCTION%'
        OR X.FILTER_PREDICATES LIKE '%SYS_OP_C2C%')
       AND x.object_owner = 'BD_ADMIN'
       AND options = 'FULL'
       AND operation = 'TABLE ACCESS';
    

    2. 解析函数中的列字段名称,如果该字段在dba_ind_columns存在,说明该字段是索引字段,但是执行计划用的全表扫描,说明这条SQL存在可能受了隐式转换的影响。

    但这有几个问题,

    1. 步骤1中存在一个难点,就是怎么知道这几个函数是在=左边,因为如果在右边,其实不会产生什么影响。另外函数中就一定是字段名称?

    2. 以上的逻辑,一些“常规”的隐式转换问题,应该能找到,但总觉得存在一些漏洞,应该不能穷举出所有的场景。

    3. 如果从隐式转换,推进一下,就是索引列使用了函数运算,这个可能就很多种场景了,例如用了TO_CHAR、TRUNC、UPPER、LOWER这些,但是肯定不够,更不要说+、-、*、/这些运算符,穷举有些困难,如果验证这个,确实不太合适,是否有更通用的验证逻辑?

    基于这个需求,

    1. 隐式转换导致索引不能使用的SQL。

    2. 索引列使用函数运算的SQL。

    还想请教一下各位大佬,有无更合适、靠谱、通用的方式和逻辑,能找出这两个场景的SQL?

    近期更新的文章:

    为什么日期不建议使用VARCHAR2或者NUMBER?

    查看时间戳类型的绑定变量

    写代码如何事半功倍?

    支持超过4000字节的varchar2类型

    “自以为对的”MyBatis空闲连接探测的机制

    小白学习MySQL - 索引键长度限制的问题

    创建主键的三种方式对指定索引表空间操作的纠正

    Oracle优化器的“短路”

    小白学习MySQL - MySQL会不会受到“高水位”的影响?

    MySQL行转列的小需求

    Oracle的greatest和least函数

    我的股市生涯

    Oracle创建主键的三种方式

    非Oracle Linux下Oracle 19c CDB数据库安装

    小白学习MySQL - 数据库软件和初始化安装

    小白学习MySQL - 闲聊聊

    Redis和Sentinel的安装部署和配置

    “火线”和“零线”

    通过索引提升SQL性能案例一则

    如何手动添加jar包到maven本地库?

    1元股权转让的一点思考

    如何打造一个经常宕机的业务系统?

    Linux恢复误删文件的操作

    Oracle处理IN的几种方式

    如何搭建一支拖垮公司的技术团队?

    IP地址解析的规则

    MySQL的skip-grant-tables

    国产数据库不平凡的一年

    Oracle要求顺序的top数据检索问题

    了解一下sqlhc

    Oracle的MD5函数介绍

    Oracle 19c的examples静默安装

    sqlplus登录缓慢的解决

    VMWare 11安装RedHat Linux 7过程中碰到的坑

    COST值相同?是真是假?

    Oracle 11g的examples静默安装

    文章分类和索引:

    公众号700篇文章分类和索引

    展开全文
  • 在oracle中,如果不同的数据类型之间关联,如果不显式转换数据,则它会根据以下规则对数据进行隐式转换,这种转换造成最常见的问题是索引失效,所以要尽量避免这种转换,在系统数据库设计阶段就要进行把关。...

    在oracle中,如果不同的数据类型之间关联,如果不显式转换数据,则它会根据以下规则对数据进行隐式转换,这种转换造成最常见的问题是索引失效,所以要尽量避免这种转换,在系统数据库设计阶段就要进行把关。转换规则参考官方文档SQL Reference /Datatype Comparison Rules 中描述的内容:

    The following rules govern the direction in which Oracle makes implicit datatype conversions:

    1) During INSERT and UPDATE operations, Oracle converts the value to the datatype of the affected column.

    对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。如假如id列的数据类型为number

    update t set id='1'; -> 相当于 update t set id=to_number('1');

    insert into t(id) values('1') -> insert into t values(to_number('1'));

    2) During SELECT FROM operations, Oracle converts the data from the column to the type of the target variable.

    对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型。如假设id列的数据类型为varchar2

    select * from t where id=1; -> select * from t where to_number(id)=1;

    但如果id列的数据类型为number,则

    select * from t where id='1'; -> select * from t where id=to_number('1');(参考下文)

    3) When comparing a character value with a NUMBER value, Oracle converts the character data to NUMBER.

    当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。如

    假设id列的数据类型为number

    select * from t where id='1'; -> select * from t where id=to_number('1');

    4) When comparing a character value with a DATE value, Oracle converts the character data to DATE.

    当比较字符型和日期型的数据时,oracle会把字符型转换为日期型。如假设create_date为字符型,

    select * from t where create_date>sysdate; -> select * from t where to_date(create_date)>sysdate;(注意,此时session的nls_date_format需要与字符串格式相符)

    假设create_date为date型,

    select * from t where create_date>'2006-11-11 11:11:11'; -> select * from t where create_date>to_date('2006-11-11 11:11:11'); (注意,此时session的nls_date_format需要与字符串格式相符)

    5) When you use a SQL function or operator with an argument of a datatype other than the one it accepts,

    Oracle converts the argument to the accepted datatype.

    如果调用函数或过程等时,如果输入参数的数据类型与函数或者过程定义的参数数据类型不一直,则oracle会把输入参数的数据类型转换为函数或者过程定义的数据类型。如

    假设过程如下定义

    p(p_1 number)

    exec p('1'); -> exec p(to_number('1'));

    6) When making assignments, Oracle converts the value on the right side of the equal sign (=) to the datatype of the target of the assignment on the left side.

    赋值时,oracle会把等号右边的数据类型转换为左边的数据类型。如

    var a number

    a:='1'; - > a:=to_number('1');

    7) During concatenation operations, Oracle converts from noncharacter datatypes to CHAR or NCHAR.

    用连接操作符(||)时,oracle会把非字符类型的数据转换为字符类型。

    select 1||'2' from dual; -> select to_char(1)||'2' from dual;

    8) During arithmetic operations on and comparisons between character and noncharacter datatypes,

    Oracle converts from any character datatype to a number, date, or rowid, as appropriate.

    In arithmetic operations between CHAR/VARCHAR2 and NCHAR/NVARCHAR2, Oracle converts to a number.

    如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等。

    如果CHAR/VARCHAR2 和NCHAR/NVARCHAR2之间作算术运算,则oracle会将她们都转换为number类型的数据再做比较。

    9) Comparisons between CHAR/VARCHAR2 and NCHAR/NVARCHAR2 types may entail different character sets.

    The default direction of conversion in such cases is from the database character set to the national character set.

    比较CHAR/VARCHAR2 和NCHAR/NVARCHAR2时,如果两者字符集不一样,则默认的转换方式是将数据编码从数据库字符集转换为国家字符集。

    10)Conversions between character values or NUMBER values and floating-point number values can be inexact, because the character types andNUMBER use decimal precision to represent the numeric value, and the floating-point numbers use binary precision.

    字符值或数值与浮点值转换可能存在不准确,因为字符和数值类型使用十进制表示数字,而浮点值使用二进制。

    简单总结:比较时,一般是字符型转换为数值型,字符型转换为日期型

    算术运算时,一般把字符型转换为数值型,字符型转换为日期型

    连接时(||),一般是把数值型转换为字符型,日期型转换为字符型

    赋值、调用函数时,以定义的变量类型为准。

    展开全文
  • mysql中的隐式转换

    2021-02-02 12:43:12
    什么隐式类型转换?在MySQL中:当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。则会发生转换隐式也就是说,MySQL会根据需要自动将数字转换为字符串,将字符串转换数字。看到这个概念之后,...
  • sql隐式转换This article will provide an overview of SQL Server implicit conversion including data type precedence and conversion tables, implicit conversion examples and means to detect occurrences of...
  • Oracle隐式转换

    2021-05-04 07:18:33
    虽然前面我们介绍了一些使用例如to_char,to_date的函数进行强制转换的方法,但是隐式转换也还是不错的。 Orac和其他的关系型数据库一样,oracle中也能进行一些隐式的数据转换,这对我们写SQL语句有非常用,我们可以...
  • Mysql中的隐式转换

    2021-01-27 20:05:18
    在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引,下面分析两种隐式转换的情况看表结构phone为int类型,name为varchar类型EXPLAIN select * from user where phone = '...
  • 用户定义的转换必须是转换成封闭类型,或者从封闭类型转换 参考 其他 应用和设计 读音 参考 前言 有时我们会遇到这么一种情况:在json数据里,数组里的数据类型不一致,导致我们不能直接反序
  • 经过一番分析,我发现order_id在数据库中是varchar类型,但是我居然给它传了整型,这会不会就是传说中字段类型的隐式转换而导致的索引失效呢?为了验证我的设想,我于是找到了这个sql所对应的mybatis相关代码,如下...
  • 1) During INSERT and UPDATE operations, Oracle converts the ...对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。如假如id列的数据类型为numberupdate t set id='1'; -> 相当于...
  • MySQL 的隐式转换

    2022-03-31 21:05:55
    当我们对不同类型的值进行比较的时候,为了使得这些数值「可比较」(也可以称为类型的兼容性),MySQL 会做一些隐式转换(Implicit type conversion): 若字符串是以数字开头,并且全部都是数字,则转换的数字结果...
  • 隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给mysql,这样会导致索引失效. 错误的例子:select * ...
  • oracle隐式转换的规则

    千次阅读 2018-12-13 16:49:35
    oracle对不同数据类型具有显示转换和隐式转换2种。 Oracle官方建议使用显示转换,原因包括以下几点: 使用显示转换更方便理解sql语句 隐式转换可能会降低sql语句的性能(比如隐式转换不会使用普通索引) 在不同...
  • 禁止使用属性隐式转换 ; margin-right:0pt">解读:SELECT uid FROM t_user WHERE phone=13812345678 会导致全表扫描,而不能命中phone索引,猜猜为什么?(这个线上问题不止出现...
  • 隐式类型转换 mysql> select * from tradelog where tradeid=110717; tradeid 的字段类型是 varchar(32),而输入的参数却是整型,所以需要做类型转换。 MySQL 里的转换规则:在 MySQL 中,字符串和数字做比较的话,...
  • SQl 的隐式转换

    千次阅读 2018-04-11 15:40:38
    什么叫做隐式转换? 显示转换,就是你使用转换函数进行操作。 隐式转换,就是你不使用转换函数,默认就给转换了。比如定义一个int型的变量@a,然后给变量符值 set @a = '2' ,这个就会隐式转换,把字符转换成数字了...
  • mysql隐式转换导致索引失效 巧的是这个问题,在另一个群里也有人问过。 然后被个大佬秒回 我自己也没细研究过Mysql隐式转换。抽个时间,写了这篇博客。       准备工作 数据库版本:5.7.11 创建一...
  • /*************************************************一、主题:ORACLE 尽量不使用隐式转换类型转换的两种方式:显示类型转换(Explicit) 自动类型转换(Implicit)*************************************************/...
  • 现象今天遇到一个慢查询,查询日志找到慢查询语句是这样的:select*fromconvert_testwhereareacode=0001andperiod>='20170511'andperiod<='20170511';convert_test表结构如下:CREATETABLE`convert_test`(`id`...
  • 关于MySql索引失效的几种原因分析,之前在这篇文章中已经有过整理,也演示了隐式转换造成索引失效的例子,本文主要来分析一下,文章中提到的:如果是数值类型,则右边无论是带引号还是不带引号都可以走索引。...
  • sql中的隐式转换

    千次阅读 2019-09-24 09:38:21
    mysql官网对隐式转换的描述: 12.2 Type Conversion in Expression Evaluation 文中的几条规则翻译如下: 1、两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回...
  • 在MySQL语句里,如果操作符应用于不同的类型的操作数,为了兼容让操作数兼容,MySQL会对操作数做类型转换,有些是自动的隐式转换。“+”号操作符使用“+”号相加的是字符串或字符串和数字,字符串会隐式转换为数字。...
  • DB性能-隐式转换

    2019-09-24 07:42:48
    DB性能-隐式转换 1 什么是隐式转换 当源数据的类型和目标数据的类型不同的时候,如果没有转换函数,就会发生隐式转换,也称自动转换。当然, 有些情况下有些类型是不可以发生转换的,比如说从DATE类型...
  • SELECT * FROM topic WHERE topic_key IN ('123213', 0); 结果(只取了部分结果集): 欲操作SQL: SELECT * FROM topic WHERE topic_key IN ('123456', '0'); 欲得到结果: 二、分析 1.'0’和0有什么区别? ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,303
精华内容 18,121
关键字:

select隐式转换