美文网首页
SQL查漏补缺

SQL查漏补缺

作者: 鸿雁长飞光不度 | 来源:发表于2019-06-10 01:27 被阅读0次

MySQL按照以下规则进行数值比较:

  • 若函数中有一个或两个参数都是NULL,则比较运算的结果为NULL,除非是等号比较运算符<=>。
  • 若同一个比较运算中的两个参数都是字符串类型,则作为字符串进行比较。
  • 若两个参数均为整数,则按照整数进行比较。
  • 十六进制值在不作为数字进行比较时,则按照二进制字符串处理。
  • 假如参数中的一个为TIMESTAMP或DATETIME数据类型,而其它参数均为常数,则在进行比较前应该将常数转为timestamp类型。
  • 在其它情况下,参数作为浮点数(实数)进行比较。
COALESCE(value,...) 

返回参数列表当中的第一个非NULL值,在没有非NULL值的情况下返回值为NULL。

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

CONCAT_WS()代表CONCAT With Separator(使用分隔符连接),是CONCAT()的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。

ELT(N,str1,str2,str3,...)

若N = 1,则返回值为str1,若N = 2,则返回值为tr2,以此类推。 若N小于1或大于参数的数目,则返回值为NULL(突然觉得这个函数好神奇)

EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

返回值为字符串。bits中的比特值按照从右到左的顺序接受检验 (低位比特到高位比特的顺序)。字符串被分隔字符串分开(默认为逗号','),按照从左到右的顺序被添加到结果中。其中number_of_bits会给出被检验的二进制位数 (默认为64)。

FIELD(str,str1,str2,str3,...)

返回值为str1, str2,str3,……列表中的str所在位置。在找不到str的情况下,返回值为0。如果所有FIELD()的参数均为字符串,则所有参数均按照字符串进行比较。如果所有的参数均为数字,则按照数字进行比较。否则,参数按照双精度类型进行比较。如果str为NULL值,则返回值为0,原因是NULL不能同任何值进行同等比较。

FIND_IN_SET(str,strlist)

假如字符串str在由N子字符串组成的字符串列表strlist中,则返回值的范围在1到N之间。一个字符串列表就是一个由一些被‘,’符号分开的子字符串组成的字符串。如果第一个参数是一个常数字符串,而第二个是SET类型的数据,则FIND_IN_SET()
函数将被使用比特计算优化。如果str不在strlist或strlist为空字符串,则返回值为0。如果任意一个参数为NULL,则返回值为NULL。 该函数在第一个参数就包含逗号(‘,’)时将无法正常运行。

FORMAT(X,D)

将数字X的格式设置为'#,###,###.##',以四舍五入的方式保留到小数点后D位, 返回结果为一个字符串。

LOAD_FILE(file_name)

读取文件并将这一文件按照字符串的格式返回。文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有FILE权限。文件必须可读,文件容量必须小于max_allowed_packet字节。若文件不存在,或因不满足上述条件而不能被读取,函数返回值为 NULL。读取文件并将这一文件按照字符串的格式返回。文件的位置必须在服务器上,你必须为文件制定路径全名,而且你还必须拥有FILE权限。文件必须可读,文件容量必须小于max_allowed_packet字节。若文件不存在,或因不满足上述条件而不能被读取,函数返回值为 NULL。

mysql> UPDATE tbl_name
 -> SET blob_column=LOAD_FILE('/tmp/picture')
 -> WHERE id=1;
LOWER(str)

返回字符串str根据最新的字符集(默认为cp1252 Latin1)映射表转换为小写字母的字符 。

LPAD(str,len,padstr)

返回字符串str的左边由字符串padstr填补到len字符长度后的字符串。假如str的长度大于len, 则返回值从右边开始被缩短至len字符。

LTRIM(str)

返回删除空格后的字符串str

MAKE_SET(bits,str1,str2,...)

返回一个(一个包含被‘,’号分开的字符串)由在bits集合中具有相应的比特的字符串组成的设定值。str1对应比特0,str2对应比特1,以此类推。str1, str2,...中的NULL值不会被添加到返回结果中。

OCT(N)

返回N的八进制值的字符串表示,其中N是一个longlong(BIGINT)数。若N为NULL,则返回值NULL

REPEAT(str,count)

返回一个由重复的字符串str组成的字符串,字符串str重复的数目为count。若count <= 0,则返回一个空字符串。若str或count为NULL,则返回NULL。

注意:这个函数执行原始的Soundex
算法,而非更加流行的加强版本算法。其区别在于原始版本首先会删去元音,其次是去除重复字符,而加强版则首先删去重复字符,而后删去元音字符。

ALTER DATABASE语法

ALTER {DATABASE | SCHEMA} [db_name]
    alter_specification [, alter_specification] ...
ALTER {DATABASE | SCHEMA} [db_name]
    UPGRADE DATA DIRECTORY NAME

alter_specification:
    [DEFAULT] CHARACTER SET charset_name
  | [DEFAULT] COLLATE collation_name

HANDLER语法

HANDLER tbl_name OPEN [ AS alias ]
HANDLER tbl_name READ index_name { = | >= | <= | < } (value1,value2,...)
  [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }
  [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name READ { FIRST | NEXT }
  [ WHERE where_condition ] [LIMIT ... ]
HANDLER tbl_name CLOSE

HANDLER语句提供通往表存储引擎接口的直接通道。HANDLER可以用于MyISAM和InnoDB表。

HANDLER...OPEN语句用于打开一个表,通过后续的HANDLER...READ语句建立读取表的通道。本表目标不会被其它线程共享,也不会关闭,直到线程调用HANDLER...CLOSE或线程中止时为止。如果您使用一个别名打开表,如果要使用其它HANDLER语句进一步参阅表则必须使用此别名,而不能使用表名。

LOAD DATA INFILE语法

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char' ]
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...)]

LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为文字字符串类型。

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO param1 FROM t;
    -> END
    -> //
mysql> delimiter ;
mysql> CALL simpleproc(@a);
mysql> SELECT @a;

相关文章

  • SQL查漏补缺

    MySQL按照以下规则进行数值比较: 若函数中有一个或两个参数都是NULL,则比较运算的结果为NULL,除非是等号...

  • sql查漏补缺

    SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END)...

  • 【Android面试查漏补缺】之事件分发机制详解

    前言 查漏补缺,查漏补缺,你不知道哪里漏了,怎么补缺呢?本文属于【Android面试查漏补缺】系列文章第一篇,持续...

  • 查漏补缺

    如果想让HTML5标签兼容低版本浏览器的话,可以使用 html5shiv js来实现。注意:一定要把它引入到前面。...

  • 查漏补缺

    图文环绕和浮动 最初的CSS只是用来写文章,熟练使用float和clear两个属性来布局: float属性:指定一...

  • 查漏补缺

    1.js字符串转换成数字与数字转换成字符串的实现方法https://www.2cto.com/kf/201612/...

  • 查漏补缺

    浮动原理 1.使用之初:是为了让文字环绕图片,并且不会遮住文字。如果让图片与文字有间距,我们在浮动元素上添加。2....

  • 查漏补缺

    今天数学老师外出学习,我用了一上午的时间给孩子们查漏补缺。 首先,训练朗读:从段落与段落之间的大停顿...

  • 查漏补缺

    1 Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换2 写 u'中' 和 u'\u4e...

  • 查漏补缺

    generator(生成器) 什么是生成器:把一个列表推倒式l = [x for x in range(10)]改...

网友评论

      本文标题:SQL查漏补缺

      本文链接:https://www.haomeiwen.com/subject/lzrelxtx.html