后台开发SQL技术总结

2023-05-16

一、字符串截取

1、substring(str, pos) 用法

从字符串的第 4 个字符位置开始取,直到结束。
mysql> select substring('example.com', 4);
+------------------------------+
| substring('example.com', 4) |
+------------------------------+
| mple.com                   |
+------------------------------+

2、substring(str, pos, len) 用法

注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值

从字符串的第 4 个字符位置开始取,只取 2 个字符。

mysql> select substring('example.com', 4, 2);
+---------------------------------+
| substring('example.com', 4, 2) |
+---------------------------------+
| mp                              |
+---------------------------------+

从字符串的第 4 个字符位置(倒数)开始取,直到结束。
mysql> select substring('example.com', -4);
+-------------------------------+
| substring('example.com', -4) |
+-------------------------------+
| .com                          |
+-------------------------------+

从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。
mysql> select substring('example.com', -4, 2);
+----------------------------------+
| substring('example.com', -4, 2) |
+----------------------------------+
| .c                               |
+----------------------------------+

二、拼接字符串

1、CONCAT(str1,str2,…)函数是用来连接多个字符串,形成一个字符串

mysql> SELECT CONCAT('FIRST ', 'SECOND');
+----------------------------+
| CONCAT('FIRST ', 'SECOND') |
+----------------------------+
| FIRST SECOND               |
+----------------------------+

对于mysql 的 like 而言,一般都要用 like concat() 组合,可以防止sql注入。例如,在mybatis 中
select * from area where  area.name like concat( '%'  ,  '#{name}' , '%' ) ;

2、group_concat( [distinct] 字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
功能: 将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
说明:

  • distinct可以排除重复值;
  • order by子句可以对结果中的值进行排序;
  • separator是一个字符串值,缺省为一个逗号。
将上面的id号从大到小排序,且用'、'作为分隔符::
mysql> SELECT name, group_concat(id order by desc separator '、') from tt2 group by name
+---------+-------------------------------------------------+
| name    | group_concat(id order by desc separator '、')   | 
+---------+-------------------------------------------------+
|  小丽    |    3                                            |
+-----------------------------------------------------------+
|  小明    |    6、5、1                                      |
+-----------------------------------------------------------+
|  小王    |    4、2                                         |
+-----------------------------------------------------------+

三、FIND_IN_SET 函数

SELECT
	B.ID,
	B.CLASSIFY_NAME,
	B.CLASSIFY_TYPE,
	B.IS_ENABLE,
	B.ADATE,
	B.UDATE,
	(
	SELECT
		GROUP_CONCAT( T.`VALUE` SEPARATOR '、' ) 
	FROM
		T_S_PS_DICT T,
		T_B_CASE_DICT_SORT C 
	WHERE
		FIND_IN_SET( T.ID, C.CLASSIFY_DETAIL ) 
		AND C.ID = B.ID 
		AND C.IS_DELETED = '0' 
		AND T.IS_DELETED = '0' 
	) CLASSIFY_DETAIL 
FROM
	T_B_CASE_DICT_SORT B 
WHERE
	B.IS_DELETED = '0' 
ORDER BY
	B.ADATE ASC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

后台开发SQL技术总结 的相关文章

随机推荐