mysql函数(补充)

发布时间 2023-04-19 09:31:24作者: 挖洞404

环境:10.4.26-MariaDB

1、sleep

sleep(n)
  • 执行一遍函数,延时n秒
  • 如果在where条件中多次需要执行sleep,则多次延时
  • sleep函数返回为false,不论是n是否为0
  • 假设设置sleep(100),数据库如实进行了延时
  • n可以设定为小数,最小是0.001,但是这并不是绝对准确

2、updatexml

updatexml(v1,v2,v3)
  • 第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
  • 第二个参数:XPath_string (Xpath格式的字符串) ,xpath即xml路径的语法
  • 第三个参数:new_value,String格式,替换查找到的符合条件的数据

第一个和第二个参数都可以执行函数。

(1)

updatexml(1,concat(0x7e,version()),0)
  • 第二个参数一般通过concat函数拼接字符前缀~,使其不满足xpath语法,进行报错,输出第二个参数的函数的结果。
  • 此时第一个参数和第三个参数可以是任意值,字符串或者数值,不执行,不影响
  • 此时整个sql语句是报错退出,不考虑updatexml函数的返回,也不考虑其他结构

(2)

updatexml(version(),'abc',0)
  • 第二个参数使满足xpath语法,则执行第一个参数
  • 第一个参数执行的结果作为updatexml函数的返回

3、extractvalue

extractvalue(v1,v2)
  • v1参数无影响
  • v2参数如果不符合xpath语法,会报错

4、不存在

测试这些函数,都报不存在:

st_pointfromgeohash((),1)
gtid_subset()和gtid_subtract()
st_longfromgeohash()
st_latfromgeohash()