首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

生手求解。

2012-12-16 
新手求解。。例如我现在有一个列fNumberDN DN.TSDN.BJBDN.TS.ZJDN.TS.ZJ.ZB这样子然后我想新建一个列 fLevel

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


[其他解释]
引用:
SQL code?12345678910111213141516IF 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  '……


那如果不是更新表
而是新建一个表 
然后根据id循环 增加fNumer 然后在每次循环中检测fNumber的值 自动添加fLevel
请问 怎么做?
[其他解释]
新手,求教导
[其他解释]
 SELECT *,len(fnumber)-len(replace(fnumber,'.',''))+1  as  flevel FROM #ta

[其他解释]
null
[其他解释]
null

热点排行