画布 1
Mysql兼容性语法及函数
  阶段一
    PREPARE stmt_name FROM preparable_stmt
      stmt_name后输入类型参数
        报错
      stmt_name后不输入类型参数
        preparable_stmt带参数
          创建预备语句成功
        preparable_stmt不带参数
          创建预备语句成功
    RENAME USER old_user TO new_user [, old_user TO new_user]
      单个用户的用户名修改
        用户不存在
          报错
        用户存在
          尝试进行修改
      多个用户的用户名修改
        存在至少一个用户名不存在
          报错并回滚
        所有用户名都存在
          尝试修改所有用户名
    EXPORT_SET(bits,on,off[,separator[,number_of_bits]])
      bits大于2^64
        bits取PG_INT64_MAX
      bits小于-2^63
        bits取PG_INT64_MIN
      bits未超出[-2^63,2^64]范围
        number_of_bits缺省
          number_of_bits取64
        number_of_bits不缺省
          number_of_bits超出[0,64]范围
            number_of_bits取64
          number_of_bits未超出[0,64]范围
            separator缺省
              separator取','
            separato不缺省
              将bits转化为二进制字符串，1转为on字符，0转为off字符
                字符串长度小于number_of_bits
                  输出字符串高位
                字符串长度大于number_of_bits
                  低位补充off字符，输出字符串
          number_of_bits为非数字类型
            报错
      bits为非数字类型
        报错
  阶段二
    FROM_BASE64(str)
      输入字符串
        字符串为base64编码
          按照BASE64的解码规则输出解码结果
        字符串末尾'='个数不符合编码规则
          输出NULL
        字符串含有非base64编码的字符
          输出NULL
      输入数字类型
        将数字转换为字符串后按照字符串处理
      输入NULL
        输出NULL
      表格列作为参数输入
        输出列中每行数据的解码结果
      在自定义函数中使用
        按照上面的输入类型进行判断能否解码
      其它函数返回自作为参数输入
        按照上面的输入类型进行判断能否解码
    OCT(N)
      输入数字类型
        未超过65位有符号整数范围
          将十进制数字转化为八进制后输出
        超过65位有符号整数范围
          输出65位有符号整数最大值的八进制
      输入字符串类型
        能转化为数字
          按照数字类型进行处理
        不能转化为数字
          输出0
      在自定义函数中使用
        按照上面的输入类型进行判断
      表格列作为参数输入
        输出列中每行数据的转化结果
    ORD(str)
      首个字符是单字节字符
        输出ascii值
      首个字符是双字节字符
        输出计算结果
      首个字符是三字节字符
        输出计算结果
      首个字符是四字节字符
        输出计算结果
      表格列作为参数输入
        输出列中每行数据的计算结果
    SUBSTRING_INDEX(str,delim,count)
      str是字符串
        str是空串
          输出空串
        str不是空串
          delim是字符串
            delim是空串
              输出空串
            delim不是空串
              count是整数
                超过32位无符号整数范围
                  输出str
                未超过32位无符号整数范围
                  count=0
                    输出空串
                  count为正数
                    从str左边开始查找，查找第count个delim
                      查找成功
                        输出查找位置左边的str子串
                      查找不成功
                        输出str
                  count为负数
                    从str右边开始查找，查找第count个delim
                      查找成功
                        输出查找位置右边的str子串
                      查找不成功
                        输出str
              count是浮点数
                截断为整数后按照整数进行处理
              count是字符串
                能转化为数字
                  按照数字类型进行处理
                不能转化为数字
                  输出空串
          delim是数字
            转为相应字符串
          表格列作为delim输入
            输出列中每行数据的计算结果
      str是数字
        转为相应字符串
      表格列作为str输入
        输出列中每行数据的计算结果
  阶段三
    TO_BASE64(str)
      输入字符串类型
        按照BASE64编码规则输出字符串的编码结果
      输入数字类型
        将数字转化为字符串后，输出编码结果
      输入NULL
        输出NULL
      表格列作为参数输入
        输出列中每行数据的编码结果
      在自定义函数中使用
        按照上面的输入类型判断能否编码
      其它函数返回值作为输入
        按照上面的输入类型判断能否编码
    UNHEX(str)
      输入字符串类型
        字符串不包含非十六进制符号
          字符串中十六进制字符数为偶数
            一个十六进制字符变成4位二进制，两个十六进制字符（8位）解码为一个字符，将所有字符合并输出一个字符串作为解码结果。
          字符串中十六进制字符数为奇数
            在十六进制串高位补0变成偶数个字符后解码
        字符串包含非十六进制符号
          无法解码，输出NULL
      输入数字类型
        将数字转成字符串后按照十六进制形式解码，如需将十六进制数转为十进制数，则需要使用其它函数
      输入二进制列或NULL
        输出NULL
      表格列作为参数输入
        输出列中每行数据的编码结果
      在自定义函数中使用
        按照上面的输入类型进行判断能够解码
      其它函数返回值作为输入
        按照上面的输入类型判断能否解码
    BIT_COUNT(N)
      输入数字类型
        整数
          未超过64位无符号整数范围
            转化为二进制字符串，输出字符串中位为1的数目
          超过64位无符号整数范围
            输出64
        浮点数
          截断为整数后按照整数进行处理
      输入字符串类型
        能转化为数字
          按照数字类型进行处理
        不能转化为数字
          输出0
      输入二进制类型
        未超过64位无符号整数范围
          输出二进制字符串中位为1的数目
        超过64位无符号整数范围
          输出64
      在自定义函数中使用
        按照上面的输入类型进行处理
      其它函数返回自作为参数输入
        按照上面的输入类型进行处理
    适配CURRENT_USER()函数, 适配CURRENT_USER的语法使用
      SELECT
        SELECT CURRENT_USER
          返回当前用户
        SELECT CURRENT_USER()
          返回当前用户
      其他使用user/role类型参数的语句
        输入CURRENT_USER
          当前用户作参数
        输入CURRENT_USER()
          当前用户作参数
  阶段四
    SCHEMA()
      与CURRENT_SCHEMA同义，输出当前模式的名称
    SESSION_USER() SYSTEM_USER() USER()
      SELECT SESSION_USER()
        返回当前用户
      SELECT SYSTEM_USER()
        返回当前用户
      SELECT USER()
        返回当前用户
    CONNECTION_ID()
      输出结果和SHOW PROCESSLIST中ID列一样
    BIT_XOR(expr)
      输入空的列
        输出0
      输入非空的列
        列为整数类型
          输出每行数据二进制异或后的结果
        列为浮点数类型
          输出每行数据二进制异或后的结果
        列为时间类型
          时间值转换成无符号整数，按整数类型处理
        列为字符/文本类型
          列中不能转换为数字的字符/文本
            转换成0，按数字类型处理
          列中能转换为数字的字符/文本
            转换成数字类型，按数字类型处理
        列中包含NULL
          该行不参与异或计算
  阶段五
    SLEEP(duration)
      输入数字类型
        正数
          整数
            正常sleep
          浮点数
            按照浮点数的值进行sleep，精确到小数
        负数
          能转换为数字
            安装数字类型处理
          不能转换为数字
            报错
      输入字符串类型
        能转换为数字
          安装数字类型处理
        不能转换为数字
          报错
      输入NULL
        严格模式
          报错
        非严格模式
          产生警告
    UUID_SHORT()
      单个用户调用函数
        输出UUID_SHORT值，连续两次调用的返回值相差为1
      不同用户调用函数
        不同用户之间的输出UUID_SHORT值不相同