2015-05-01 32 views
1

因此,我試圖對用戶進行模糊搜索並返回他們的姓名和電子郵件。由於某些瘋狂的原因,誰決定讓這個數據庫的郵件列成爲nchar(320)。所以我需要從電子郵件中刪除空格。我能夠做到。但是我做到這一點的方式只返回單個變量。我不知道如何讓它從電子郵件地址中刪除空格來返回整個列。這是我現在擁有的。在sql中刪除空格並返回多行

USE [TADB] 
GO 
/****** Object: StoredProcedure [dbo].[ResourceSearch] Script Date: 05/01/2015 14:29:45 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[ResourceSearch] 
@Name varchar(25) = null  

AS 
BEGIN 

    DECLARE @Email varchar(100) 
    DECLARE @ResName varchar(100) 

    IF @Name = '' OR @Name IS NULL 
     Set @Name = NULL 
    Else 
     Set @Name = @Name + '%' 

    SELECT @Email = EMAIL_ADDRESS 
    FROM [RESOURCE] 
    WHERE 
     (@Name IS NULL OR (RESOURCE_NAME LIKE @Name)) 

    SELECT @ResName = RESOURCE_NAME 
    FROM [RESOURCE] 
    WHERE 
     (@Name IS NULL OR (RESOURCE_NAME LIKE @Name)) 

    SELECT @ResName, REPLACE(@Email, ' ', '') 

END 
+2

哪個RDBMS是爲了這個?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

回答

1

您可以替換這最後3條SELECT語句,顯示從電子郵件被刪除的空格中的所有列:

SELECT RESOURCE_NAME, REPLACE(EMAIL_ADDRESS, ' ', '') 
FROM [RESOURCE] 
WHERE 
    (@Name IS NULL OR (RESOURCE_NAME LIKE @Name)) 

你只得到一個變量,因爲你是從設定的第一個值結果導入一個變量,而只選擇該列將返回整個結果。

此外,當select語句與條件具有相同的FROM/WHERE子句時,可以將2個語句組合爲1並分別設置變量。但在這種情況下,它看起來像你不需要@Email和@ResName變量。

+1

乾杯人,那工作。我試圖將它們結合起來,但是當我使用變量的時候,它並沒有將它們分開。再次感謝。 – discodowney