MySQL 特殊字符

这篇具有很好参考价值的文章主要介绍了MySQL 特殊字符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


大咖好呀,我是恋喵大鲤鱼。

鄙人第三本开源书籍《MySQL快速上手》上线啦,欢迎大家协同共建。

1.注释符

SQL 注释是用来在 SQL 语句中添加对代码的解释说明。SQL 支持两种类型的注释符号。

单行注释:使用两个连续的减号(–)表示。减号后面的内容将被视为注释,直到该行结束。

SELECT column1, column2
FROM table
-- This is a single-line comment
WHERE condition;

多行注释:使用/* 注释内容*/的格式表示。注释内容位于 /* 和 */ 之间,可以跨越多行。

SELECT column1, column2
FROM table
/* This is a
   multi-line comment */
WHERE condition;

MySQL 除了支持上面 SQL 标准规定的两种注释方式,还支持使用 # 进行单行注释。因为 # 不是 SQL 标准规定的注释方式,所以并不是所有数据库都支持。

2.字符串符

在 SQL 标准中,字符串使用单引号(')表示,而不是双引号(")。

但对于主流的数据库,都支持双引号表示字符串,如 Oracle、MySQL 和 SQL Server 等。

如果字符串中包含单引号该如何表示呢?

在 SQL 中,如果要表示一个带有单引号的字符串有多种方式。

可以使用反斜杠(\)进行转移,也可以使用单引号进行转义,即使用两个单引号来表示一个单引号。

SELECT 'It\'s a beautiful day';
SELECT 'It''s a beautiful day';

因为 MySQL 支持使用双引号表示字符串,所以还可以使用双引号表示一个包含单引号的字符串。

SELECT "It's a beautiful day"

反之亦然,如果字符串中包含双引号,也可以使用上面三种方式来表示带有双引号的字符串。

至于使用单引号还是双引号表示字符串,我们应该首选单引号,因为这符合 SQL 标准,且是主流做法。

3.反引号

在 MySQL 中,反引号(`)是一种用于转义标识符(例如表名、列名、别名等)的特殊字符。反引号的主要作用是允许你在标识符中使用保留字、特殊字符或包含空格的名称,而不会引发语法错误。

以下是反引号在 MySQL 中的作用与示例:

  1. 避免与保留关键字冲突。

如果你希望使用一个与 MySQL 中的保留字同名的标识符,可以使用反引号将其括起来,以避免语法错误。

SELECT `select`, `from`, `where` FROM `my_table`;
  1. 允许特殊字符。

使用反引号,您可以创建包含特殊字符(如空格、点、逗号等)的标识符。这样,您可以为表、列等对象取名,使其更具描述性,而不受命名规则的限制。

SELECT `first name`, `last name` FROM `employee.data`;
  1. 区分大小写。

MySQL 默认情况下对标识符不区分大小写。如果你希望区分,可以使用反引号。

SELECT `MyColumn` FROM `my_table`;

需要注意的是,反引号在 SQL 标准中并不是通用的,它是 MySQL 特有的语法。大多数其他数据库系统使用双引号或方括号来实现类似的功能。同时,过度使用反引号可能会导致查询变得不够可读,因此建议仅在必要的情况下使用。

4.模式匹配

通配符

SQL 标准中规定模式匹配使用下划线(_)匹配任何单个字符,使用百分号(%)匹配任意数量的字符(包括零个字符)。

在 MySQL 中,SQL 模式默认不区分大小写。使用 SQL 模式时请勿使用 = 或 <>,请改用 LIKE 或 NOT LIKE 比较运算符。

要查找以b开头的名称:

SELECT * FROM pet WHERE name LIKE 'b%';
+--------+--------+---------+------+------------+------------+
| name   | owner  | species | sex  | birth      | death      |
+--------+--------+---------+------+------------+------------+
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

查找以fy结尾的名称:

SELECT * FROM pet WHERE name LIKE '%fy';
+--------+--------+---------+------+------------+-------+
| name   | owner  | species | sex  | birth      | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
+--------+--------+---------+------+------------+-------+

查找包含w的名称:

SELECT * FROM pet WHERE name LIKE '%w%';
+----------+-------+---------+------+------------+------------+
| name     | owner | species | sex  | birth      | death      |
+----------+-------+---------+------+------------+------------+
| Claws    | Gwen  | cat     | m    | 1994-03-17 | NULL       |
| Bowser   | Diane | dog     | m    | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen  | bird    | NULL | 1997-12-09 | NULL       |
+----------+-------+---------+------+------------+------------+

查找恰好包含五个字符的名称,请使用模式字符 _ :

SELECT * FROM pet WHERE name LIKE '_____';
+-------+--------+---------+------+------------+-------+
| name  | owner  | species | sex  | birth      | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  |
| Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |
+-------+--------+---------+------+------------+-------+

MySQL 除了提供标准的 SQL 模式匹配,还支持基于扩展正则表达式的模式匹配,类似于 Unix 实用程序(如 vi、grep 和 sed)使用的扩展正则表达式。

如果您想要在 MySQL 中使用正则表达式进行匹配,可以查阅 MySQL 官方文档 Pattern Matching 以了解更多信息。

转义符

由于百分号和下划线是通配符,具有特殊的意义。当我们想要判断字符串中是否包含这两个字符时,例如“50%”,就需要使用一个转义字符将模式中的通配符解释为普通字符。转义字符使用 ESCAPE 指定:

expr LIKE pat ESCAPE 'escape_char'

默认情况下,MySQL 使用反斜线(\)作为转义字符。

SELECT '完成进度 50%' LIKE '%50%%' AS like1, '日期 20150101' LIKE '%50%%' AS like2;
+-------+-------+
| like1 | like2 |
+-------+-------+
|     1 |     1 |
+-------+-------+

上面的查询没有使用转义字符,直接使用“50%”进行匹配,结果“日期 20150101”也满足条件。

SELECT '完成进度 50%' LIKE '%50\%%' AS like1, '日期 20150101' LIKE '%50\%%' AS like2;
+-------+-------+
| like1 | like2 |
+-------+-------+
|     1 |     0 |
+-------+-------+

使用转义字符后,50\%只会匹配50%

MySQL 可识别下表中所示的转义字符。 对于所有其他转义字符,反斜杠将被忽略。例如,\x 仍是 x。 转义字符区分大小写,例如 \b 被解释为退格键,而 \B 被解释为 B。

Escape Sequence Character Represented by Sequence
\0 An ASCII NUL (X’00’) character
\’ A single quote (') character
\" A double quote (") character
\b A backspace character
\n A newline (linefeed) character
\r A carriage return character
\t A tab character
\Z ASCII 26 (Control+Z)
\\ A backslash () character
\% A % character
\_ A _ character

参考文献

MySQL 8.0 Reference Manual :: 9.7 Comments
MySQL Tutorial :: 4.4.7 Pattern Matching文章来源地址https://www.toymoban.com/news/detail-689063.html

到了这里,关于MySQL 特殊字符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】关于数据库字符编码以及字符集排序相关知识

    通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题。 关于MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题,只有修改表的字符集和排序规则才能根治,而且事半功倍。utf8mb4支持的最低mysql版本为5.5.3+,若不是,请

    2024年02月12日
    浏览(45)
  • 快速生成 MySQL 数据库关系图

    在公司老旧系统里,数据库表很多,但是在设计之初并没有建立好关系图,导致新人刚入职,面对N个库,每个库几百张表,很不方便。 例如:公司某一个系统的库有三百张表,在不熟悉项目的情况下,打开数据库看到一列列的表,很不清晰,对新入职同事很不友好。 我们一个

    2024年02月04日
    浏览(49)
  • Mysql 创建数据库字符集与排序规则

    新版本数据库默认编码格式是  utf8mb4 , utf8mb4  比  utf8  多了  emoji  编码支持,建议普通表使用  utf8  如果这个表需要支持  emoji  就使用  utf8mb4 ,也可以全部用  utf8mb4 , utf8mb4 完全向下兼容 utf8 。 字符集 当数据库需要适应不同的语言就需要有不同的字符集,如果不指

    2024年02月07日
    浏览(48)
  • MySQL——修改数据库和表的字符编码

    修改编码: ( 1) 先停止服务 ( 2 )修改 my.ini 文件 ( 3 )重新启动服务说明: 如果是在修改 my.ini 之前建的库和表,那么库和表的编码还是原来的 Latin1 ,要么删了重建,要么使用 alter 语句修改编码。 mysql create database 0728 db charset Latin1; Query OK, 1 row affected ( 0.00 sec) mysql use

    2024年02月09日
    浏览(50)
  • 【问题解决】mysql 数据库字符串分割之后多行输出方法

    项目需要从一张表查询出来数据插入到另一张表,其中有一个字段是用逗号分隔的字符串,需要多行输入到另一张表,那么这个如何实现呢 下面先粘贴下sql语句: 参数解释 1.SUBSTRING_INDEX(str, delimiter, count)     参数解释     str :必填。STRING类型。待截取的字符串     separat

    2024年02月14日
    浏览(48)
  • MYSQL数据库连接字符串(connectionString)配置参数大全详解

    请参考原文:MYSQL数据库连接字符串(connectionString)配置参数大全详解

    2024年02月12日
    浏览(58)
  • C#控制台连接Mysql数据库,有配置数据库连接字符串的配置文件

    实现功能 读取. .txt 中的配置文件,来初始化连接字符串 让连接字符串的配置文件不存在会主动创建默认的连接字符串 注意点: 需要引用Newtonsoft 使用mysql

    2024年02月10日
    浏览(59)
  • Java连接mysql数据库的五分钟快速入门教程

    总体流程 :数据库-Java 总体步骤:         1.创建数据库并新建表         2.创建一个Java项目,在项目下新建文件夹lib,类型为Directory         3.将下载好mysql-connector-java-8.0.27.jar放到lib目录下         4.将lib下的依赖添加到Java项目中         5.编写代码连接数据库并运行

    2024年02月08日
    浏览(55)
  • 快速实现数据库的转换,如从Mysql切换到Postgresql【含gif】

    因为项目的需要,需要将使用的数据库A从Mysql切换到Postgresql并且合并到同一个数据库B中。 使用 Navicat 15的【逆向表到模型】功能,可以快速将Mysql表转为Postgresql表(数据+表结构),而且支持多表的转换。 * 注意到一个小细节: Navicat 15【多表选择】时不能在左侧[导航栏]直接

    2024年02月11日
    浏览(41)
  • 数据库编码 问题 mysql 修改字符集为utf8mb4

    数据库编码 问题 mysql 修改字符集为utf8mb4 问题 ; 当向数据库插入表,或者在表中插入数据时,出现 ERROR 1366 (HY000): Incorrect string value: ‘xBDxF0xD3xB9’ for column ‘name’ at row 1 原因 数据库编码方式 和 表编码方式 以及 插入数据(字符串)的编码方式不同 我们可以查看建表,

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包