创建 SQL 服务器存储过程以像 "Contains"

Create SQL Server stored procedure to act like a "Contains"

我有一个存储过程,当前 return 值构成查询等于的列。

@CUST_NAME = CUST_NAME

我现在需要它更像(伪代码)

 (column) CUST_NAME CONTAINS (variable) @CUST_NAME 

所以基本上,如果搜索是 'smith',它将 return 列中的所有史密斯以及所有 'smithson'。

当前存储过程:

ALTER PROCEDURE [dbo].[spGet_Account_Numbers_From_Name]
    @CUST_NAME AS VARCHAR(36)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 1
        CAST(CAST([TAOAB_ACCOUNT_NUMBER] AS BIGINT) AS VARCHAR(20)) AS TA_ACCOUNT_NUMBER,
        CAST(CAST([FTPAB_ACCOUNT_NUMBER] AS BIGINT) AS VARCHAR(20)) AS FTB_ACCOUNT_NUMBER,
        [CUSTOMER_SSN]
    FROM 
        [AccountConversion]
    WHERE
        @CUST_NAME = CUST_NAME
END

您不能使用 "CONTAINS" 关键字,除非该列是全文索引的。

如果你想进行部分字符串匹配,你可以这样做:

ALTER PROCEDURE [dbo].[spGet_Account_Numbers_From_Name] @CUST_NAME AS VARCHAR(36)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        CAST(CAST([TAOAB_ACCOUNT_NUMBER] AS BIGINT) AS VARCHAR(20)) AS TA_ACCOUNT_NUMBER,
        CAST(CAST([FTPAB_ACCOUNT_NUMBER] AS BIGINT) AS VARCHAR(20)) AS FTB_ACCOUNT_NUMBER,
        [CUSTOMER_SSN]
    FROM 
        [AccountConversion]
    WHERE
        CUST_NAME LIKE '%' + @CUST_NAME + '%'
END