# `Fn_spit_length` (function) > 根据分隔符 获取分割后对象个数 - **Type:** FUNCTION - **Returns:** `int` - **Deterministic:** NO - **SQL data access:** CONTAINS SQL ## Parameters | # | Mode | Name | Type | |---|---|---|---| | 1 | IN | `str` | `longtext` | | 2 | IN | `splitstr` | `varchar(5)` | ## Body _Body is not pre-cached. To inspect: `mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE FUNCTION `Fn_spit_length`'`._ ## Narrative **Business context:** Counts how many tokens a delimited string would produce when split on `splitstr`. Building block used throughout the save-return / before-save-return validation procs (`Sp_saveReturn_*`, `Sp_beforeSaveReturn_*`) — those procs iterate over comma-joined id lists coming from the FROUNT save payload, and this gives them the loop bound. **What it does:** `length(str) - length(replace(str, splitstr, '')) + 1` — one-liner that subtracts the trimmed length from the original to count delimiters, then adds one. Returns 1 even when the input has no delimiter at all. **Invocation:** called from ~80 production procs, dominated by the `Sp_saveReturn_*` and `Sp_beforeSaveReturn_*` document save flows (sales order `_sSod`, work order `_sWod`, quotation `_sQtt`, packing `_sPkg`, etc.) and a handful of cost-calc / reporting procs.