LIKE子句应用于存储过程中的DB类型

Dio*_*tos 0 sql t-sql sql-server

我创建了以下类型:

CREATE TYPE dbo.expressions
AS TABLE
(
  expression varchar(255)
);
GO
Run Code Online (Sandbox Code Playgroud)

在存储过程中,我如何使用我收到的n个类型,并且每个类型都使用带有like子句的select?

在"编程"(和伪代码)方面,将是这样的:

for each expression in expressions
rows+=select * from table where table.field LIKE '%' + expression[i] + '%'
Run Code Online (Sandbox Code Playgroud)

我总是可以从我的API多次调用SP,但我想知道这是否可行,甚至更快,在SQL方面做.

Sal*_*n A 5

您只需从/ JOIN中选择类型的实例.假设你有类似的东西:

CREATE TYPE expressions AS TABLE (expression varchar(255));
CREATE PROCEDURE mysp(@expressions AS expressions) ...
Run Code Online (Sandbox Code Playgroud)

您可以像使用表一样使用变量:

SELECT * 
FROM @expressions AS expressions
INNER JOIN yourtable ON yourtable.field LIKE '%' + expressions.expression + '%'
Run Code Online (Sandbox Code Playgroud)

以上将允许您expression在select子句中使用.否则您可以使用以下内容:

SELECT * 
FROM yourtable
WHERE EXISTS (
    SELECT 1
    FROM @expressions AS expressions
    WHERE yourtable.field LIKE '%' + expressions.expression + '%'
)
Run Code Online (Sandbox Code Playgroud)