sql中生成查询的模糊匹配字符串
删除存在的函数和表
```sql
IF EXISTS (SELECT FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[f_Sql]') AND xtype IN (N'FN', N'IF', N'TF'))
DROP FUNCTION [dbo].[f_Sql]
GO
IF EXISTS (SELECT FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[序数表]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [序数表]
GO
```
创建新的辅助表和函数
```sql
-- 创建辅助表序数表
SELECT 1000, id = IDENTITY(int, 1, 1) INTO 序数表 FROM syscolumns a, syscolumns b;
-- 为辅助表添加主键约束
ALTER TABLE 序数表 ADD CONSTRAINT pk_id_序数表 PRIMARY KEY (id);
GO
-- 创建函数f_Sql用于生成模糊匹配查询语句
CREATE FUNCTION f_Sql (
@str NVARCHAR(1000), -- 要检索的字符串
@fdname SYSNAME -- 在哪个字段中检索
) RETURNS NVARCHAR(0) AS
BEGIN
DECLARE @r NVARCHAR(0); SET @r = '';
SELECT @r = @r + CASE
WHEN SUBSTRING(@str, id, CHARINDEX(' ', @str + ' ', id) - id) IN ('or', 'and') THEN ' ' + SUBSTRING(@str, id, CHARINDEX(' ', @str + ' ', id) - id) + ' '
WHEN SUBSTRING(@str, id, 1) = '(' THEN '[' + @fdname + '] LIKE ''%' + SUBSTRING(@str, id + 1, CHARINDEX(' ', @str + ' ', id) - id - 1) + '%'''
WHEN SUBSTRING(@str, CHARINDEX(' ', @str + ' ', id) - 1, 1) = ')' THEN '[' + @fdname + '] LIKE ''%' + SUBSTRING(@str, id, CHARINDEX(' ', @str + ' ', id) - id) + '%'''; END FROM 序数表 WHERE id <= LEN(@str) AND CHARINDEX(' ', ' ' + @str, id) - id = 0; RETURN (@r); END; GO
```
使用示例:调用函数进行模糊匹配查询
在上述函数创建完成后,我们可以使用它来执行模糊匹配查询。例如: `SELECT A = dbo.f_Sql('(Web or HTML or Inter)and(Programmer or Developer)', 'content')` 等类似的查询语句,根据需要灵活指定模糊匹配的关键字和条件连接关系。这些操作可以大大提高查询效率和灵活性。需要注意的是,在实际应用中,请保留引用的信息(如引用请保留此信息),以尊重原作者的工作和版权。
编程语言
- sql中生成查询的模糊匹配字符串
- thinkphp实现把数据库中的列的值存到下拉框中的方
- 详解PHP中array_rand函数的使用方法
- 将Session值储存于SQL Server中
- Bootstrap弹出框之自定义悬停框标题、内容和样式
- MYSQL updatexml()函数报错注入解析
- laravel-admin表单提交隐藏一些数据,回调时获取数据
- 防止Node.js中错误导致进程阻塞的办法
- JavaScript toUpperCase()方法使用详解
- 配置Grunt的Task时通配符支持和动态生成文件名问
- 系统分配随机密码
- 浅谈JavaScript的Polymer框架中的事件绑定
- Javascript中indexOf()和lastIndexOf应用方法实例
- PHP chunk_split()函数讲解
- PHP中判断变量为空的几种方法分享
- mysql5.7.17 zip 解压安装详细过程