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:需要截取字符串的个数,若无此项,则从截取位置一直截取到最后
必要的时候可以不用逗号用from
和for
代替,substr(string from start for length)
Ascii
返回字符串str的最左字符的数值。返回0,如果str为空字符串。返回NULL,如果str为NULL。 ASCII()返回数值是从0到255。
Pow
pow(x,y)表示计算x的y次方,当计算值过大时,会发生DOUBLE溢出,数据库报错
MID
必要的时候可以不用逗号用from
和for
代替,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
如果expr1是TRUE(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类型
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues