如何在存储过程中实现我的查询?

时间:2018-07-23 06:57:40

标签: sql-server

我使用此查询创建了一个表NewAddData

select (
    FirstName +' '+
    coalesce(MiddleInitial + '''', '') +
    ' ' +
    Lastname
) as Name
into NewAddData
from c_client c;

如果得到的话,我得到以下输出

Select * from NewAddData

enter image description here

我想获取其中带有撇号的名称。 Select语句的工作方式为

Select Name from AddData where Name like '%Paige%' and Name like '%''%'

我得到的输出为Paige A'Harrell

ALTER PROCEDURE GetName @ClientName Varchar(max)
AS
BEGIN
SET NOCOUNT ON;
Select Name from AddData where Name like '%@ClientName%' and Name like '%''%'
END
GO

我正在尝试在存储过程中执行此操作,但是它不起作用。 我想将名称的任何部分作为参数传递,如果它带有撇号,我想将该名称作为输出。 如果该名称没有撇号,则应显示该名称不存在。 请帮忙。

3 个答案:

答案 0 :(得分:1)

将'%'+ @ ClientName +'%'替换为'%@ ClientName%'

ALTER PROCEDURE GetName @ClientName Varchar(max)
AS
BEGIN
SET NOCOUNT ON;
Select Name from AddData where Name like '%'+@ClientName+'%' and Name like '%''%'
END
GO

答案 1 :(得分:0)

ALTER PROCEDURE GetName @ClientName Varchar(max)
AS
BEGIN
           SELECT NAME FROM ADDDATA WHERE  NAME IN
       (
        SELECT TOKEN
        FROM UDF_SPLITSTRING(@CLIENTNAME, ',')
        )
END
GO

答案 2 :(得分:0)

您可以按照以下步骤进行操作:

ALTER PROCEDURE GetName @ClientName varchar(100)
AS
BEGIN
SET NOCOUNT ON;

if exists(select [name] from AddData where [name] LIKE concat('%', @ClientName, '%') and [name] like '%''%')
        begin
            select @ClientName
        end
    else
        begin 
            select @ClientName + ' is not found'
        end
END