我正在尝试创建一个存储过程,该过程将拆分网页上的 3 个文本框,这些文本框具有用户输入,其中都有逗号分隔的字符串。我们的表中有一个名为“combined_name”的字段,我们必须搜索名字和姓氏以及任何已知的错误或昵称等,例如 @p1: 'grei,grie' @p2: 'joh,jon,j.. ' p3: 是空的。
第三个框的原因是在我设置了基础知识之后,我们将不包含、开头、结尾和 IS 来进一步缩小我们的结果。
所以我希望得到所有包含这些的任何组合的记录。我最初是在 LINQ 中编写的,但它不起作用,因为您无法查询列表和数据集。数据集太大(130 万条记录)无法放入列表中,因此我必须使用存储过程,无论如何这可能会更好。
我是否必须使用 2 个 SP,一个用于拆分每个字段,一个用于选择查询,或者可以用一个来完成吗?我在 tsql 中使用什么函数来包含?我尝试使用 IN win a 查询,但无法弄清楚它如何与多个参数一起工作。
请注意,这将是一个访问受限的内部站点,因此担心 sql 注入不是优先事项。
我确实尝试了动态 SQL,但没有得到正确的结果:
CREATE PROCEDURE uspJudgments @fullName nvarchar(100) AS
EXEC('SELECT *
FROM new_judgment_system.dbo.defendants_ALL
WHERE combined_name IN (' + @fullName + ')')
GO
EXEC uspJudgments @fullName = '''grein'', ''grien'''
即使这确实检索到了正确的结果,如何使用 3 个参数来完成?