mysql同じ文字列の最後の文字の位置を取得

1179 ワード

詳細
ツリー構造のidを生成するときは直接
PID|数字|..の形式で数字を生成するのは、リストを得るたびにリストのidの最後の|記号の後ろの数字の最大値+1を取って新しいノードを保存することです.
しかし、私はmysqlの中でこのような関数サンプルがあることを発見していません.私は見つけられなかったかもしれません.だから、私は関数を書いてこのことを解決するしかありません.兄弟たちに役に立つことを望んで、もしmysqlの中である関数がこのようにすることができるならば、同じく言ってください
はい、文を見てください.

DELIMITER $$

DROP FUNCTION IF EXISTS `sose`.`lastIndexOf`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `lastIndexOf`(str varchar(100)) RETURNS int(11)
begin
   DECLARE num int default 0;
   DECLARE strs varchar(100);
   set strs = str;
   while instr(strs,'|') != 0 do
        set num =num+instr(strs,'|');
	set strs = substring(strs,instr(strs,'|')+1);
   end while;
   return num;
end$$

DELIMITER ;

もちろんこの中で私が置き換えた記号は死んでいます.あなたたちは自分でパラメータを追加することができます.
これを终えて私の时、私はできると思って、それは1つの致命的な间违いが现れたことを知っていて、それは私がmaxの时に彼が得たのが1つの文字列であることを忘れて、ほほほ、マニュアルを调べてcast()が変换することができることを発见しました

  select max(CAST(substring(node_id,lastIndexOf(node_id)+1) as DECIMAL )) from bus_dir where NODE_PID='A01|001'