日期:2014-05-17  浏览次数:20629 次

新手求解。。
例如我现在有一个列
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

------其他解决方案--------------------
引用:
SQL code?1234567891011121314151617181920212223242526272829IF OBJECT_ID('tempdb.dbo.#Ta') IS NOT NULL DROP TABLE #Ta CREATE TABLE #Ta(fNumber varchar(16)) INSERT INTO #Ta(fNumber)SELECT  '……


那如果不是更新表
而是新建一个表 
然后根据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)