今天客户那边遇到了一个比较奇葩的问题跑来问我,这个问题比较冷门,所以特别记录下。

问题描述

数据库的字段存在斜杠或者空格的时候,怎么用sql进行insert或者select操作。

问题解答

对于这种特殊字符,我们一般想到的是用转义符进行处理,所以试了下"/"、引号、单引号等常见的转义符,发现依然语法错误,又查了下mysql的官方说明:

特殊字符位于列名中时必须进行转义,如果列名中包含\t,(,),/,\,=,<,>,+,-,*,^,",',[,],~,#,|,&,% 则必须用中括号括起来。eg:列名为Column#,应写为[Column#];列名包括中括号,必须使用斜杠进行转义,eg:列名为Column[]的列应写为[Column[\]](只有第二个中括号必须转义)。

以中括号的形式进行转义,然后又试了下中括号,发现依然还是不行。

通过搜索,最后找到需要以反引号“`”(一般键盘的左上角数字1左边的那个键)来处理。

其它反引号的用法

之前对反引号几乎没有使用过,所以借此机会搜索总结了下反引号相关的用法。

Linux反引号的作用

特殊的赋值

Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下:

(1) $ count=9 #将数字赋予变量count

(2) $ name="ming" #将字符赋予变量name

(3) $ listc=`ls -la` #将Linux命令赋予listc,listc的值就是该命令的执行结果

反引号的作用

反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。尽管可以通过输入字符或者字符串来创建变量值,也可以获取来自于其他Linux命令的值。为把Linux命令的结果赋予变量,实现需要执行这个命令。如果在命令行上把Linux命令放在反引号中,这个命令会首先被执行,其结果会成为命令行的一个参数。在赋值时,通过把命令放在反引号中,以便于首先执行,命令的执行结果会被赋予一个变量。反引号可以被视为由要执行命令组成的表达式,其结果会被赋予变量。组成命令的字符本身不会被赋予。在下面的范例中,命令ls *.c被执行,其结果然后被赋予变量listc。ls *.c会生成具有.c扩展名的所有文件列表。这个文件列表随后被赋予变量listc。

总结

反引号里面的字符串必须是能执行的命令,否则会出错;它的作用是命令替换,将其中的字符串当成Shell命令执行,返回命令的执行结果。

mysql中反引号的作用

为了区分MYSQL的保留字与普通字符而引入的符号

举个例子:SELECT `select` FROM `test` WHERE select='字段值'

在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分。

引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select='字段值'

不加反引号建的表不能包含MYSQL保留字,否则出错

反引号`,数字1左边的符号

保留字不能用于表名,比如desc,此时需要加入反引号来区别,但使用表名时可忽略反引号。

sql

create table desc报错

create table desc成功

create table test成功

drop table test成功


保留字不能用于字段名,比如desc,此时也需要加入反引号,并且insert等使用时也要加上反引号。 ```sql```
create table `test`(`desc` varchar(255))成功
insert into test(desc) values('fxf')失败
insert into test(`desc`) values('fxf')成功

mysql 列名中 包含斜杠或者空格的处理方式的更多相关文章

  1. SQL Server如何查找表名或列名中包含空格的表和列

    最近发现一个数据库中的某个表有个字段名后面包含了一个空格,这个空格引起了一些小问题,一般出现这种情况,是因为创建对象时,使用双引号或双括号的时候,由于粗心或手误多了一个空格,如下简单案例所示: USE ...

  2. sed命令替换字符包含斜杠\,引号的处理方法

    在字符替换中,可能会遇见引号,“/”等的替换,这时应该注意,sed的命令原型是: sed -i  "s/oldstring/goalstring/g" file 如果一个路径是da ...

  3. 微信小程序session_key解析中反斜杠问题处理 Java解析

    Java服务端微信小程序解密用户信息.手机号需用到session_key也需要decode,以下是官方描述: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId ...

  4. JS中反斜杠和单双引号的配合使用效果

    <div id="tag"></div> <div id="tag1"></div> <div id=&q ...

  5. python 正则表达式中反斜杠(\)的麻烦和陷阱

    这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题. (1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符     ...

  6. php中路径斜杠的应用,兼容win与linux

    更多内容推荐微信公众号,欢迎关注: PHP中斜杠的运用 兼容win和linux 使用常量:DIRECTORY_SEPARATOR如:"www".DIRECTORY_SEPARATO ...

  7. js文件中三斜杠注释///reference path的用途

    编辑某个js文件时,要想这个js文件出现其他js成员的ide提示,可以在js文件开头使用3个斜杠注释和reference指令的path指向此js文件路径,这样在编写这个js文件时,ide就会自动出现p ...

  8. SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案

    今天做网站[标签]筛选功能时,出现了这么个奇葩的问题. 我是直接通过<a>标签中href来跳转的,url中包含汉字 <a href="/tags/标签A"> ...

  9. C# 中定义斜杠 \

    \ 是转义符 如     \’ 单引号    \” 双引号    \\ 反斜杠    \0 空    \a 警告(产生峰鸣)    \b 退格    \f 换页    \n 换行    \r 回车   ...

随机推荐

  1. 菜鸟学Struts2——Actions

    在对Struts2的工作原理学习之后,对Struts2的Action进行学习.主要对Struts2文档Guides中的Action分支进行学习,如下图: 1.Model Driven(模型驱动) St ...

  2. SuperMap iClient for JavaScript 新手入门

    地理信息系统(英语:Geographic Information System,缩写:GIS)是一门综合性学科,结合地理学与地图学,已经广泛的应用在不同的领域,是用于输入.存储.查询.分析和显示地理数 ...

  3. junit4进行单元测试

    一.前言 提供服务的时候,为了保证服务的正确性,有时候需要编写测试类验证其正确性和可用性.以前的做法都是自己简单写一个控制层,然后在控制层里调用服务并测试,这样做虽然能够达到测试的目的,但是太不专业了 ...

  4. .NET设计模式访问者模式

    一.访问者模式的定义: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 二.访问者模式的结构和角色: 1.Visitor 抽象访问者角色,为该 ...

  5. Java获取本机的IP与MAC地址

    有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...

  6. Mybatis批量删除

    <delete id="deleteByStandardIds"> delete from t_standard_catalog where standard_id i ...

  7. Jqprint实现页面打印

    好些项目需要实现页面打印,特别是一些后台管理类系统,下面介绍一款轻量级的打印插件: 1.实现页面打印要引入jQuery和Jqprint.点击下载Jqprint插件 <script languag ...

  8. BPM流程中心解决方案分享

    一.需求分析 在过去办公自动化的浪潮中,很多企业已经实施了OA流程,但随着客户的发展和对流程管理的越来越重视, 客户对流程应用需求越来越深 入,您可能面临以下需求: 1.流程功能不能满足需求,包括流程 ...

  9. MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义

    [转自网络]https://my.oschina.net/cers/blog/292191 PK Belongs to primary key 作为主键 NN Not Null 非空 UQ Uniqu ...

  10. Ubuntu下配置apache开启https

    一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那ht ...