美文网首页
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查漏补缺

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