2015-12-04 16 views
1

我有一些數據庫中的字段需要從中提取信息。對於名稱列的數據是按以下格式:修剪符號後的所有內容,並搜索其他字段SQL

Jim John - 1234567 

我只想名節,因此從修剪一切「 - 」開始。我試過以下

"SELECT REPLACE(LEFT(name, CHARINDEX('-',name)-1),'_',' '), othername, streetname, postal, 
             nameID, helper, helperID 

     FROM [DATABASE].[dbo].[nameDB] with (nolock) 

     WHERE 
       (othername like '" & txtSearch.Text & "' 
       or postal like '" & txtSearch.Text & "') 
       and (postal not like '%Error%' 
       and postal not like '%nas_admin%' 
       and postal not like '%NASAdmin%' 
       and postal like '[A-z][A-z][A-z]%')" 

這是不行的,是有可能,我可以修剪數據的同時尋找其他領域的其他數據?

感謝所有幫助

+0

請標記使用DBMS。 (有些非ANSI SQL ......) – jarlh

+0

更新,歡呼 –

回答

1

嘗試這種使用Substring

SELECT 
    SUBSTRING(name, 0, CHARINDEX('-', name)) AS [name] , othername, streetname, postal, 
             nameID, helper, helperID 

     FROM [ARDVARC].[dbo].[nameDB] with (nolock) 

     WHERE 
       (othername like '" & txtSearch.Text & "' 
       or postal like '" & txtSearch.Text & "') 
       and (postal not like '%Error%' 
       and postal not like '%nas_admin%' 
       and postal not like '%NASAdmin%' 
       and postal like '[A-z][A-z][A-z]%')" 

希望這會有所幫助。

+0

現貨,正是我所需要的,歡呼的幫助! –

+0

說我想也這樣做到OTHERNAME字段,我只是複製相同的代碼並添加它之後? –

+0

是的....使用相同的邏輯..複製代碼並用'othername'替換'name' .. –

0
SELECT 
     PARSENAME(REPLACE('Jim John - 1234567','-','.'),2) 

結果:

name  
--------- 
Jim John 

所以,你可以使用它作爲

SELECT 
    PARSENAME(REPLACE(NAME, '-', '.'), 2) NAME 
    ,PARSENAME(REPLACE(othername, '-', '.'), 2) othername 
    ,streetname 
    ,postal 
    ,nameID 
    ,helper 
    ,helperID 
FROM [DATABASE].[dbo].[nameDB] WITH (NOLOCK) 
WHERE ... 

Parsename()Replace()