所以我试图对用户进行模糊搜索并返回他们的姓名和电子邮件。出于某些疯狂的原因,制作此数据库的人决定将电子邮件列设为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
答案 0 :(得分:1)
您可以使用此替换最后3个SELECT语句,以显示从电子邮件中删除空白的所有列:
{{1}}
您只获得单个变量,因为您将结果中的第一个值设置为变量,而只选择该列将返回整个结果。
此外,当select语句与条件具有相同的FROM / WHERE子句时,您可以将2个语句组合为1并分别设置变量。但在这种情况下,看起来你不需要@Email和@ResName变量。