- 帮我写一个mssql ,字段模糊匹配和严格匹配的动态存储查询示例
复制代码- 以下是一个在 SQL Server 中实现字段模糊匹配和严格匹配的动态存储过程查询示例,
复制代码- -- 创建存储过程
- CREATE PROCEDURE GetProductsByDynamicMatch
- -- 用于指定匹配类型,比如 'like' 表示模糊匹配,'=' 表示严格匹配
- @MatchType NVARCHAR(10),
- -- 要匹配的字段名
- @FieldName NVARCHAR(50),
- -- 匹配的值
- @MatchValue NVARCHAR(255)
- AS
- BEGIN
- DECLARE @sql NVARCHAR(MAX);
- SET @sql = N'SELECT * FROM Products WHERE ';
-
- -- 根据传入的匹配类型来构建不同的条件语句
- IF @MatchType = 'like'
- BEGIN
- SET @sql = @sql + QUOTENAME(@FieldName) + N' LIKE ''%' + @MatchValue + '%''';
- END
- ELSE IF @MatchType = '='
- BEGIN
- SET @sql = @sql + QUOTENAME(@FieldName) + N' = ''' + @MatchValue + '''';
- END
- ELSE
- BEGIN
- -- 如果传入的匹配类型不合法,返回提示信息
- RAISERROR('Invalid match type specified.', 16, 1);
- RETURN;
- END
-
- -- 执行动态构建的 SQL 语句
- EXEC sp_executesql @sql;
- END
复制代码
假设要模糊查询产品名称中包含 “手机” 的产品信息,可以这样调用存储过程:
- EXEC GetProductsByDynamicMatch @MatchType = 'like', @FieldName = 'ProductName', @MatchValue = '手机';
复制代码
- SELECT * FROM Products WHERE [ProductName] LIKE '%手机%';
复制代码
如果要严格查询产品类别为 “电子产品” 的产品,调用方式如下:
- EXEC GetProductsByDynamicMatch @MatchType = '=', @FieldName = 'Category', @MatchValue = '电子产品';
复制代码- SELECT * FROM Products WHERE [Category] = '电子产品';
复制代码
|