2015-05-26 27 views
1

我正在使用下面的SQL代碼來獲取計算機列表。我需要以某種方式獲取這些結果,並在每個記錄的前4個字符旁邊填充另一列。例如:將sql查詢結果的前4個字符分配到另一列中?

Computer Name New Column 

ABCD1000P  ABCD 

這可能嗎?

SELECT SYS.Netbios_Name0 
FROM dbo.v_R_System AS SYS 
    INNER JOIN dbo.v_GS_PROCESSOR AS Processor ON SYS.ResourceID = Processor.ResourceID 
    INNER JOIN dbo.v_GS_COMPUTER_SYSTEM ON SYS.ResourceID = dbo.v_GS_COMPUTER_SYSTEM.ResourceID 
WHERE (SYS.Obsolete0 = 0) AND (SYS.Client0 = 1)and SYS.Netbios_Name0 not like '%-%' 
+1

查詢您的發佈輸出「ABCD1000P」嗎? – Matt

+0

是的,我現在只需要把ABCD放到一個新列中 – user1342164

+0

你的意思是你想要另一個選擇列,所以計算機名和新列都應該被返回? – jarlh

回答

2

使用LEFT功能

SELECT S.Netbios_Name0 AS ComputerName, LEFT(S.Netbios_Name0, 4) AS NewColumn 
FROM dbo.v_R_System AS S 
INNER JOIN dbo.v_GS_PROCESSOR AS P ON S.ResourceID = P.ResourceID 
INNER JOIN dbo.v_GS_COMPUTER_SYSTEM AS C ON S.ResourceID = C.ResourceID 
WHERE S.Obsolete0 = 0 
AND S.Client0 = 1 
AND S.Netbios_Name0 NOT LIKE '%-%' 
2

使用派生表:

select dt.Computer.Name, LEFT(ComputerName,4) as NewColumn 
(
SELECT SYS.Netbios_Name0 as ComputerName 
FROM   dbo.v_R_System AS SYS INNER JOIN 
        dbo.v_GS_PROCESSOR AS Processor ON SYS.ResourceID = Processor.ResourceID INNER JOIN 
        dbo.v_GS_COMPUTER_SYSTEM ON SYS.ResourceID = dbo.v_GS_COMPUTER_SYSTEM.ResourceID 
WHERE  (SYS.Obsolete0 = 0) AND (SYS.Client0 = 1)and SYS.Netbios_Name0 not like '%-%' 
) dt 

編輯LEFT,不SUBSTR。謝謝馬特!

+1

我的瞬間想法也是SUBSTR! – Matt

相關問題