删除空格并在sql中返回多行

时间:2015-05-01 19:22:43

标签: sql sql-server

所以我试图对用户进行模糊搜索并返回他们的姓名和电子邮件。出于某些疯狂的原因,制作此数据库的人决定将电子邮件列设为nchar(320)。所以我需要从电子邮件中删除空格。我能够做到。但我这样做只会返回单个变量。我不知道如何让它返回整个列,从电子邮件地址中删除空格。这就是我现在所拥有的。

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

1 个答案:

答案 0 :(得分:1)

您可以使用此替换最后3个SELECT语句,以显示从电子邮件中删除空白的所有列:

{{1}}

您只获得单个变量,因为您将结果中的第一个值设置为变量,而只选择该列将返回整个结果。

此外,当select语句与条件具有相同的FROM / WHERE子句时,您可以将2个语句组合为1并分别设置变量。但在这种情况下,看起来你不需要@Email和@ResName变量。