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

Sql LIKE子句应用于存储过程中的DB类型,sql,sql-server,tsql,Sql,Sql Server,Tsql,我创建了以下类型: CREATE TYPE dbo.expressions AS TABLE ( expression varchar(255) ); GO 在存储过程中,如何使用接收到的n个类型,并对每个类型执行一个select with like子句 就“编程”(和伪代码)而言,应该是这样的: for each expression in expressions rows+=select * from table where table.field LIKE '%' + express

我创建了以下类型:

CREATE TYPE dbo.expressions
AS TABLE
(
  expression varchar(255)
);
GO
在存储过程中,如何使用接收到的n个类型,并对每个类型执行一个select with like子句

就“编程”(和伪代码)而言,应该是这样的:

for each expression in expressions
rows+=select * from table where table.field LIKE '%' + expression[i] + '%'
我总是可以从我的API多次调用SP,但我想知道在SQL端这样做是否可能,甚至更快。

您只需选择from/JOIN和该类型的实例即可。假设您有类似于:

CREATE TYPE expressions AS TABLE (expression varchar(255));
CREATE PROCEDURE mysp(@expressions AS expressions) ...
可以像使用表格一样使用变量:

SELECT * 
FROM @expressions AS expressions
INNER JOIN yourtable ON yourtable.field LIKE '%' + expressions.expression + '%'
上面将允许您在select子句中使用
表达式
。否则,您可以使用以下选项:

SELECT * 
FROM yourtable
WHERE EXISTS (
    SELECT 1
    FROM @expressions AS expressions
    WHERE yourtable.field LIKE '%' + expressions.expression + '%'
)
您只需选择from/JOIN与该类型的实例。假设您有类似于:

CREATE TYPE expressions AS TABLE (expression varchar(255));
CREATE PROCEDURE mysp(@expressions AS expressions) ...
可以像使用表格一样使用变量:

SELECT * 
FROM @expressions AS expressions
INNER JOIN yourtable ON yourtable.field LIKE '%' + expressions.expression + '%'
上面将允许您在select子句中使用
表达式
。否则,您可以使用以下选项:

SELECT * 
FROM yourtable
WHERE EXISTS (
    SELECT 1
    FROM @expressions AS expressions
    WHERE yourtable.field LIKE '%' + expressions.expression + '%'
)

样本数据和期望的结果将非常有用。什么是
+=
选择*
意味着什么?样本数据和期望的结果将非常有用。什么是
+=
选择*
有什么关系?