LIKE子句应用于存储过程中的数据库类型

时间:2018-10-29 11:12:07

标签: sql sql-server tsql

我创建了以下类型:

CREATE TYPE dbo.expressions
AS TABLE
(
  expression varchar(255)
);
GO

如何在存储过程中使用我收到的n种类型,并分别使用带有like子句的select?

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

for each expression in expressions
rows+=select * from table where table.field LIKE '%' + expression[i] + '%'

我总是可以从我的API多次调用SP,但是我想知道是否可以在SQL端做到这一点,甚至更快。

1 个答案:

答案 0 :(得分:5)

您只需从/ 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子句中使用expression。否则,您可以使用以下内容:

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