`

SQL模糊查询语法LIKE

阅读更多
SQL模糊查询语法LIKE
http://blog.sina.com.cn/s/blog_53004b490100fi91.html
(标签:杂谈  分类:软件编程
有关SQL模糊查询
执行 数据库查询时,有完整查询和模糊查询之分。
一般模糊语句如下:

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

其中关于条件,SQL提供了四种匹配模式:

1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请运用两个百分号(%%)表示。

比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果须要找出u_name中既有“三”又有“猫”的记录,请运用 and条件
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

若运用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2,_: 表示任意单个字符。匹配单个任意字符,它常用来限定表达式的字符长度语句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;


3,[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);

如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;

4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、……

5,查询内容包含通配符时

由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句不能正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:


function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前

str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

在查询前将待查字符串先经该函数处理即可。
通常写一个简单的模糊查询的SQL语句格式可以如下例:

sql="select * from 表名 where 字段名 like ’%" & request.form("请求变量") & "%’ "
说明:1、WHERE 关键词的后面跟着用来过滤数据的条件,百分号%是通配符,可以代表多个任何字符,若是下划线_就代表一个任意字符。
实例如下:

sql="select * from 表名 where 姓名 like ’%"&request.form("name")&"%’ and 性别 like ’%"&request.form("sex")&"%’ and 电话 like 
’%"&request.form("call")&"%’ "
上面这条SQL语句使用了三个模糊查询条件:姓名、性别、电话,当然我们还可以用类似

姓名 like ’%"&request.form("name")&"%’ 的方式构造更多的条件。这样我们就实现了多条件的模糊查询,实际试一试,问题出来了!!!如果数据库的查询字段都有值的化没问题,但如果是下边这样:

         姓名                                   性别           电话
         www.DeepTeach.com                    87654321
        当你模糊查询:"电话:5432"时将无法输出该记录,这是因为"性别"无值所以经两个and运算后结果为false/0,没有输出。 显然数据库中这三个字段的必须含有字段值,否则会漏掉正确的输出结果,
        数据库中正确的输入应是这样的:

         姓名                                    性别            电话
         www.DeepTeach.com       null       87654321        <null>值的逻辑值为1,所以经两次and运算后结果为true/1,可以输出上述记录。

那么在实际中如何来实现这样的多条件模糊查询呢?我是这样来实现的:



name=Request.QueryString("name")     ’姓名
sex=Request.QueryString("sex")         ’性别
call=Request.QueryString("call")     ’电话

Sql= "Select * from 表名 where 1=1"    ’1=1 避免所有查询字段为空时出错

if name <>"" then
  Sql= Sql & "and 姓名 like ’%"& name &"%’"
end if
if sex <>"" then
  Sql= Sql & "and 性别 = ’"& sex &"’"    ’这个不是模糊查询了
end if
if call <>"" then
  Sql= Sql & "and 电话 like ’%"& call &"%’"
end if
......
      在此,你要注意到姓名、性别、电话这三个字段在数据库中的类型应为“文本”类型,否则查询时会出现“数据类型不匹配”错误。
      如果三个条件均无输入,点击“查询”时将显示数据库中的所有记录,可能这是你不希望的,可以应该加入一个判断:当三个条件均无输入时,显示“请输入查询条件”,并中断输出到客户浏览器(response.end)例句如下:


if request.form("name")="" and request.form("sex")="" and request.form("call")="" then
    response.write("请输入查询条件(可模糊查询)")
    response.end 
end if
      切记:sql="select * from 表名 where 姓名 ... 电话 like ... "
         必须在一行内输入完,而不能用回车符分段,因为vbs多行被认为是多个语句,这是许多初写者常犯的错误。如果你想分多段写,可以用上面的方法在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内实现。在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。
分享到:
评论

相关推荐

    SQL模糊查询语法小结

    SQL模糊查询通过`LIKE`关键字来实现,其基本语法结构如下: ```sql SELECT column FROM table WHERE column LIKE 'pattern'; ``` 其中,`pattern`是用于匹配的数据模式,包含通配符。SQL提供了多种通配符来帮助...

    sql模糊查询

    本文将基于给定的文件信息——“SQL模糊查询”这一主题,进行深入探讨,涵盖模糊查询的基本概念、应用场景、实现方法及其在C#中的具体应用。 ### SQL模糊查询基本概念 SQL模糊查询是指在SQL查询语句中,利用通配符...

    MySQL模糊查询语法

    MySQL 提供了两种模糊查询语法:标准的 SQL 模式匹配和基于 Unix 实用程序的扩展正则表达式模式匹配。 SQL 模式匹配 在 MySQL 中,SQL 模式匹配允许使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个...

    sql 模糊查询

    ### SQL Server 中的模糊查询详解 #### 一、引言 在数据库操作中,精确查询是一种常见的需求场景,但有时我们需要进行更为灵活的查询——即模糊查询。这种查询方式允许我们在不完全确定数据具体内容的情况下,依然...

    SQL SERVER 模糊查询的技巧

    ### SQL Server 模糊查询技巧详解 在数据库管理和开发工作中,模糊查询是非常实用且常见的功能之一,它能够帮助我们高效地查找符合条件的数据记录。本文将详细介绍SQL Server中的模糊查询技巧,包括基本的通配符...

    SuperMap Objects .NET模糊查询

    要实现SuperMap Objects .NET的模糊查询,首先需要了解SQL语句中的模糊查询语法。在SQL中,我们可以使用`LIKE`关键字结合通配符来执行模糊查询。例如,`%`代表零个、一个或多个任意字符,`_`则代表单个任意字符。在...

    Sql Server基本语法大全

    本文将详细介绍Sql Server中的基本语法,包括创建与删除数据库、备份与恢复、表的操作、索引与视图的创建、以及一些基本的SQL查询语句和高级查询运算符。 1. 创建与删除数据库: - `CREATE DATABASE` 用于创建新的...

    有关SQL模糊查询

    SQL模糊查询是数据库查询中非常实用的功能,它允许我们使用通配符来匹配不完全确定的数据。在SQL中,主要有四种通配符匹配模式: 1. `%`:这个通配符表示任意数量(包括零个)的任意字符。例如,`SELECT * FROM ...

    DB2 SQL 语法 速查

    ### DB2 SQL 语法详解 #### 一、资料定义语言 DDL (Data Definition Language) 资料定义语言主要用于数据库结构的设计与创建,包括表、视图、索引等对象的定义。 ##### 1. 创建表 **语法**: ```sql CREATE TABLE...

    数据库中的模糊查询技术

    1.3 模糊查询语言:这是支持模糊查询的特定查询语法,如SQL的LIKE、INSTR等函数。 2 模糊查询 2.1 实现:模糊查询的实现通常涉及到特定的查询函数或操作符,例如SQL中的LIKE、ILIKE(不区分大小写)、BETWEEN等。 ...

    sqlServer数据库语法总结.pdf

    * `LIKE`运算符:用于模糊查询。 + 例如:`SELECT * FROM 表名 WHERE 列 LIKE '%值%'` 查询包含指定值的记录。 * `IN`运算符:用于查询指定值的记录。 + 例如:`SELECT * FROM 表名 WHERE 列 IN (1, 2, 3)` 查询...

    sql的基本语法格式大全

    以上就是SQL基本语法格式的大全,涵盖了数据库和表的操作、数据操作语言以及一些高级查询和连接操作。对于初学者来说,掌握这些基础语法是非常重要的。通过实践和练习,你可以逐渐熟悉并灵活运用这些SQL语句来处理...

    SQL语法入门教程

    ### SQL语法入门教程知识点详解 #### 一、SQL基础语法概览 本教程旨在为初学者提供一个系统化的SQL语法学习路径,通过介绍各种关键字及其用法,并结合具体实例进行详细解析,帮助读者快速掌握标准SQL的核心概念和...

    (必备)SQL查询语法[基础,提升,技巧全能力]

    ### SQL查询语法详解 #### 一、基础知识 **1. 创建数据库** - **命令格式**: ```sql CREATE DATABASE database-name; ``` - **功能描述**:用于创建一个新的数据库。 **2. 删除数据库** - **命令格式**: ...

    MySQL模糊查询语法[文].pdf

    2. **SQL模糊查询的使用**: - **LIKE操作符**:在SQL查询中,使用LIKE操作符配合模式进行匹配。例如,`SELECT * FROM pet WHERE name LIKE "b%"`将返回所有以"b"开头的宠物记录。 - **NOT LIKE操作符**:与LIKE...

    sql基本语法、函数

    根据提供的文件信息,我们可以归纳出一系列关于SQL的基本语法与函数的知识点。以下是对这些知识点的详细解释: ### SQL 基本语法 #### SELECT 语句 - **基础查询**: - `SELECT * FROM 表名;`:用于从指定表中...

    sql数据库语法

    ### SQL数据库语法基础知识点 #### 一、数据库操作 1. **创建数据库** - 语法:`CREATE DATABASE database-name;...以上是关于SQL基础语法的一些核心知识点,掌握了这些内容可以有效地管理和查询数据库中的数据。

    SQL语句大全、SQL基础、SQL基本语法

    - **说明**: 使用`LIKE`关键字可以进行模糊匹配查询。 - **排序**: - **语法**: `SELECT * FROM table1 ORDER BY field1, field2 [DESC];` - **总数**: - **语法**: `SELECT COUNT(*) AS total_count FROM ...

    数据库T_SQL查询基础5.ppt

    `LIKE`子句用于执行模糊查询,例如`WHERE lastname LIKE 'S%'`将找到所有姓氏以"S"开头的员工。 查询系统信息是`SELECT`的另一个用途,如`SELECT @@version`可以显示SQL Server的当前版本。同时,`SELECT`还可以...

Global site tag (gtag.js) - Google Analytics