就这种数据永远只选取最末级的FNumber,但是具体多少层是不固定的,怎么写sql 语句呀?数据库版本是sql server 2016.
是不是还有一列父节点字段?
没有的话,增加一个父级字段
如果FNumber不在父级字段里面,就是末级
reverse是把字符串倒置,然后通过charindex来获取倒置之后第一个*的位置,然后使用substring函数进行字符串截取,截取后再使用reverse倒置回来即可。以下为例子declare @str varchar(20)set @str = '10*20*300'select reverse(substring(reverse(@str),1,charindex('*',reverse(@str)) - 1))结果是300以上是SQLSERVER的语法。
很简单就是找点是最多的数据就好了吧?
SELECT * FROM your_table A
WHERE LEN(FNumber) - LEN(REPLACE(FNumber, '.', '')) =(SELECT MAX(LEN(FNumber) - LEN(REPLACE(FNumber, '.', ''))) FROM your_table)
提供一个思路:FNumber按前四位分组,计算FNumber字段长度,只要分组下最大长度的值