2 回答
TA贡献1851条经验 获得超3个赞
sed中的正则写法和其他语言有些不同,
这里:(\|) 相当于其他语言中的 正则: \(|\)
sed中捕获括号要加转义,没加转义只匹配对应的字符,没有特殊意义。而竖线 | 表示或者关系时要加转义\|
sed中类似的还有 表示数量的加号也要加转义\+ 不然只匹配加号本身,表示数量的大括号比如:a\{2,5\}
TA贡献1829条经验 获得超7个赞
创建一个function getChildLst, 得到一个由所有子节点号组成的字符串.
mysql> delimiter //
mysql>
mysql> CREATE FUNCTION `getChildLst`(rootId INT)
-> RETURNS varchar(1000)
-> BEGIN
-> DECLARE sTemp VARCHAR(1000);
-> DECLARE sTempChd VARCHAR(1000);
->
-> SET sTemp = '$';
-> SET sTempChd =cast(rootId as CHAR);
->
-> WHILE sTempChd is not null DO
-> SET sTemp = concat(sTemp,',',sTempChd);
-> SELECT group_concat(id) INTO sTempChd FROM treeNodes where FIND_IN_SET(pid,sTempChd)>0;
-> END WHILE;
-> RETURN sTemp;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> delimiter ;
使用我们直接利用find_in_set函数配合这个getChildlst来查找
mysql> select getChildLst(1);
+-----------------+
| getChildLst(1) |
+-----------------+
| $,1,2,3,4,5,6,7 |
+-----------------+
1 row in set (0.00 sec)
添加回答
举报