如题:mysql中执行是可以成功的:在于mysql的隐匿转换
  
  
   例如:SELECT * from sc_cl_stock_biz_log where id='12480fff';
  
  
   id为int 主键该sql执行是没有问题,会查询到id=12480的数据
  
  
   如果SELECT * from sc_cl_stock_biz_log where id='124ff80fff';
  
  
   这样是查询不到12480的数据,它是默认人字段传入字符串会截取从第一位int型开始到第一个非int型的值作为条件
  
  要随机生成
  
   字符串
  
  代码如下: 在
  
   MySQL
  
  中定义一个随机串的方法,然后再SQL语句中调用此方法。 随机串函数定义方法:  代码如下: CREATE DEFINER=`root`@`localhost` FUNCTION `rand_string`(n
  
   INT
  
  ) RETURNS varchar(255) CHARSET latin1 BEGIN DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’; DECLARE return_str varc
                                    这可以使用 SQL 的 JSON 操作符 JSON_CONTAINS() 实现。
举个例子,假设第一个表名为 table1,其中有一个字段名为 id
  
   类型
  
  为
  
   int
  
  ,第二个表名为 table2,其中有一个字段名为 ids
  
   类型
  
  为 Json 数组。
那么可以使用以下 SQL 语句检查第一个表中的 id 是否存在于第二个表中的 ids 数组中:
SELECT 
  tabl...
                                    1.
  
   MySQL
  
  
   查询
  
  日期(datetime)
  
   类型
  
  转
  
   字符串
  
  select DATE_FORMAT(CREATE_TIME,'%Y-%m-%d %H:%i:%s') as CREATE_TIME from 表名;
2.
  
   类型
  
  为
  
   int
  
  ,前端输入
  
   字符串
  
  
   查询
  
  。把
  
   int
  
  匹配
  
   字符串
  
  再
  
   查询
  
  SELECT a.* FROM (SELECT *, (CASE checkederStatus WHEN 0 THEN '未盘点' WHEN 1 THEN '盘点中' WHEN 2 THEN '盘点完毕' ELSE '' END)
                                    例如:1ACOUJHN->1    “ACOUJHN”->0    “00ACOUJHN”->0    “0010ACOUJHN”->10    “ACOUJ11HN”->0。导致能
  
   查询
  
  出来的原因:当
  
   字符串
  
  为"1ACOUJHN"这种时,会被自动截取出开头为连续整数,最终是1来
  
   查询
  
  。导致能
  
   查询
  
  出来的原因:当
  
   字符串
  
  为"ACOUJHN"这种时,会被隐式转换为0,所以会
  
   查询
  
  出来。
                                    在sql
  
   查询
  
  字段的时候,比如数据的订单字段,这个字段定义的
  
   类型
  
  为varchar
  
   类型
  
  ,生成的规则是年月日当前的时间戳。比如生成了2019031515526356151234这样的订单,如果sql 的where
  
   条件
  
  写法为 oid=2019031515526356151234,这样,
  
   mysql
  
  引擎会认为你是要检索整型,这样的话就会将oid列转为整型,where
  
   条件
  
  也转为整型,儿整型为11位,结果可......
研究发现,
  
   MySql
  
  以
  
   字符串
  
  第一个字符开始遍历,遇到非数字则结束,遍历到的数字作为
  
   查询
  
  
   条件
  
  ,如上图第一个字母前的数字“1”作为
  
   条件
  
  ,
  
   查询
  
  到Id为“1”的记录。
如果想精确匹配,可以使用concat关键字,将Id转成
  
   字符串
  
  去比较,可以精确匹配,如图:
                                     create table test1(ID
  
   int
  
  ,UserName nvarchar(10))select * from test1insert test1 values (1,'11')insert test1 values (2,'22')insert test1 values (3,'33')insert test1 values (4,'44')insert test1 values ...
要想了解数据库 InnoDB 引擎是怎么样存储数据的,必须先了解 B+Tree,了解之后才容易理解其存储原理
在 InnoDB 存储引擎中,也有页的概念,默认每个页的大小为 16K,也就是每次读取数据时都是读取 4*4K 的大小。
一般表的主键
  
   类型
  
  为
  
   INT
  
  (占用4个字节)或BIG
  
   INT
  
  (占用8个字节),指针
  
   类型
  
  也一般为4或8个字节,也就是说一个页(B+Tree中的...
                                    Android 的db.update()以及db.delete()函数的
  
   查询
  
  匹配
  
   条件
  
  为一个
  
   字符串
  
  数组进行匹配。
而我的数据库主键id是
  
   int
  
  
   类型
  
  ,不是字符
  
   类型
  
  ,所以
  
   查询
  
  不出来,后经过测试,可以使用如下方式,一个空的
  
   字符串
  
  内容“”+id来匹配,亲测有效。
当然可能有着更好的方法,但目前技术不精,只采取这样的方法来
  
   查询
  
  匹配。