SQL Server

STUFF

character_expression:一个字符数据表达式,可以是常量,变量,也可以是字符列或二级制数据列

start:一个重整数值,指定要删除和插入的开始位置,如果start或length为负,则返回空字符串。如果start比第一个character_expression长,则返回空字符串。start可以是big int型。

length:一个整数,指定要删除的字符串。如果length比第一个character_expression长,则最多删除到最后一个character_expression中的最后一个字符。length可以是big int类型。

返回类型:如果character_expression是受支持的字符数据类型,则返回字符数据。如果character_expression是一个受支持的binary数据类型,则返回二进制数据。

例如:

以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。

SELECT STUFF('abcdef', 2, 3, 'ijklmn');
结果:aijklmnef

FOR XML PATH

通常与stuff函数结合起来使用, 将查询结果集以XML形式展现

现有表

执行

select stuff((select ','+test_name+test_pass from test for xml path('root')),1,1,'')

select stuff((select ','+test_name+test_pass from test for xml path('')),1,1,'')

MySQL

Concat

返回结果为连续参数产生的字符串。如果任何一个参数为NULL,则返回值为NULL。

Concat_ws

concat_ws()代表concat with separator ,是concat的特殊形式。第一个参数是其它参数的分隔符,如果分隔符为NULL,则结果为NULL

函数返回结果为连接参数产生的字符串

Group_concat

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

将同一个分组中的值连接起来,返回一个字符串结果。

通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

Updatexml

  • XML_document:String格式,为XML文档对象的名称
  • XPath_string:XPath格式的字符串
  • new_value:String格式,替换查找到的符合条件的数据

SQL注入通常用于显错注入;XPath_string出参数错误报错,得到信息,方法:

updatexml(1,concat(1,(SELECT database())),1);

Extractvalue

  • XML_document:String格式,为XML文档对象的名称

  • XPath_string:Xpath格式的字符串

    extractvalue(1,concat(1,database()));

Left/Right

此函数返回ARG最左边,右边的LENGTH个字符串,ARG可是char或binary,string

Substr

  • string:需要截取的字符串
  • start:开始截取的位置
  • length:需要截取字符串的个数,若无此项,则从截取位置一直截取到最后

必要的时候可以不用逗号用fromfor代替,substr(string from start for length)

Ascii

返回字符串str的最左字符的数值。返回0,如果str为空字符串。返回NULL,如果str为NULL。 ASCII()返回数值是从0到255。

Pow

pow(x,y)表示计算x的y次方,当计算值过大时,会发生DOUBLE溢出,数据库报错

MID

必要的时候可以不用逗号用fromfor代替,mid(string from start for length)

Like

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

支持通配符匹配,like有两个模式:_%

_:表示单个字符,%:表示0个或多个任意字符

例如:name,%,%e,n%,%a%,_ame,____,_%_都匹配name这个字符

Rlike/Regexp

rlike==regexp 都是正则匹配,特殊字符需要进行适当的反斜杠转义

INSTR

C1:表示被搜索的字符串

C2:希望搜索的字符串

I:搜索的开始位置,默认为1

J:出现的位置,默认为1

返回值为匹配开始的位置,sql中第一个字符的位置为1

IF

如果expr1TRUE(expr1<>0 and expr1<>NULL),则语句发返回值为expr2,否则返回expr3

另外还有一种写法:case when expr1 then expr2 else expr3

limit i,n

i:为查询结果的索引值,默认从0开始

n:为从第i条开始之后的n条记录

set prepare from execute

sql:为要执行的sql语句,可以将其化为十六进制后传入饶过单引号限制

table:为执行sql语句的表

BINARY

SQL语句中默认是不区分大小写,在sql语句中加上binary即可区分

CAST

转换任意类型expr为指定的type类型