2 回答

TA貢獻1851條經(jīng)驗 獲得超3個贊
sed中的正則寫法和其他語言有些不同,
這里:(\|) 相當于其他語言中的 正則: \(|\)
sed中捕獲括號要加轉義,沒加轉義只匹配對應的字符,沒有特殊意義。而豎線 | 表示或者關系時要加轉義\|
sed中類似的還有 表示數(shù)量的加號也要加轉義\+ 不然只匹配加號本身,表示數(shù)量的大括號比如:a\{2,5\}

TA貢獻1829條經(jīng)驗 獲得超7個贊
創(chuàng)建一個function getChildLst, 得到一個由所有子節(jié)點號組成的字符串.
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函數(shù)配合這個getChildlst來查找
mysql> select getChildLst(1);
+-----------------+
| getChildLst(1) |
+-----------------+
| $,1,2,3,4,5,6,7 |
+-----------------+
1 row in set (0.00 sec)
添加回答
舉報