新手求解。。
例如我现在有一个列
fNumber
DN
DN.TS
DN.BJB
DN.TS.ZJ
DN.TS.ZJ.ZB
这样子
然后我想新建一个列 fLevel
变成
fNumber fLevel
DN 1
DN.TS 2
DN.BJB 2
DN.TS.ZJ 3
DN.TS.ZJ.ZB 4
可以理解为根据.来判断
所以我想请教下
要怎么写 才可以自动生成?谢谢了
在线等
[最优解释]
IF OBJECT_ID('tempdb.dbo.#Ta') IS NOT NULL
DROP TABLE #Ta
CREATE TABLE #Ta(fNumber varchar(16))
INSERT INTO #Ta(fNumber)
SELECT 'DN' UNION ALL
SELECT 'DN.TS' UNION ALL
SELECT 'DN.BJB' UNION ALL
SELECT 'DN.TS.ZJ' UNION ALL
SELECT 'DN.TS.ZJ.ZB'
select *,(select COUNT(*)+1 from master..spt_values
WHERE type='P'
and SUBSTRING(fNumber,number,1)='.')
from #ta a[其他解释]
IF OBJECT_ID('tempdb.dbo.#Ta') IS NOT NULL
DROP TABLE #Ta
CREATE TABLE #Ta(fNumber varchar(16))
INSERT INTO #Ta(fNumber)
SELECT 'DN' UNION ALL
SELECT 'DN.TS' UNION ALL
SELECT 'DN.BJB' UNION ALL
SELECT 'DN.TS.ZJ' UNION ALL
SELECT 'DN.TS.ZJ.ZB'
select *,(select COUNT(*)+1 from master..spt_values
WHERE type='P' and LEN(a.fNumber)>=number
and SUBSTRING(fNumber,number,1)='.')
from #ta a
[其他解释]
那如果不是更新表
而是新建一个表
然后根据id循环 增加fNumer 然后在每次循环中检测fNumber的值 自动添加fLevel
请问 怎么做?
[其他解释]
IF OBJECT_ID('tempdb.dbo.#Ta') IS NOT NULL
DROP TABLE #Ta
CREATE TABLE #Ta(fNumber varchar(16))
INSERT INTO #Ta(fNumber)
SELECT 'DN' UNION ALL
SELECT 'DN.TS' UNION ALL
SELECT 'DN.BJB' UNION ALL
SELECT 'DN.TS.ZJ' UNION ALL
SELECT 'DN.TS.ZJ.ZB'
ALTER TABLE #Ta ADD fLevel int
UPDATE #Ta
SET fLevel = LEN(fNumber) - LEN(REPLACE(fNumber,'.','')) + 1
SELECT * FROM #Ta
fNumber fLevel
---------------- -----------
DN 1
DN.TS 2
DN.BJB 2
DN.TS.ZJ 3
DN.TS.ZJ.ZB 4
(5 行受影响)
[其他解释]
那如果不是更新表
而是新建一个表
然后根据id循环 增加fNumer 然后在每次循环中检测fNumber的值 自动添加fLevel
请问 怎么做?
[其他解释]
新手,求教导
[其他解释]
SELECT *,len(fnumber)-len(replace(fnumber,'.',''))+1 as flevel FROM #ta
[其他解释]
null
[其他解释]
null