我创建了以下类型:
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端做到这一点,甚至更快。
答案 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 + '%'
)