mysql 列名中 包含斜杠或者空格的处理方式
今天客户那边遇到了一个比较奇葩的问题跑来问我,这个问题比较冷门,所以特别记录下。
问题描述
数据库的字段存在斜杠或者空格的时候,怎么用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')成功
最新文章
- (多重背包+记录路径)Charlie&#39;s Change (poj 1787)
- 【leetcode❤python】191. Number of 1 Bits
- PacBio软件总览 - 初级分析
- php的header()大全
- Map集合的四种遍历方式
- vijos p1071新年趣事之打牌
- WIX: Hide installed program from the Add/Remove Programs window.
- 学做酷炫有爱的免费网页,学习 Github Page 教你分分钟搭建自己的博客
- Array(数组)的使用
- 【转】搭建spark环境 单机版
- 从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)
- 如何从零开始系统化学习视觉SLAM?
- Cas 服务器 下载、编译及部署
- HTML5 离线缓存Appcache
- Web开发——HTML基础(图像、音频和视频内容)
- [20180316]理解db file parallel read等待事件.txt
- ThinkPHP3.2.3:使用模块映射隐藏后台真实访问地址
- All Start Here.
- OpenGL学习(3)——Shader
- Eclipse------导入项目后出现javax.servlet.jsp cannot be resolved to a type
热门文章
- HTTP协议系列(1)
- CSS3 3D立方体效果-transform也不过如此
- 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)
- PHP 5.6 编译安装选项说明
- 随手记_C#验证码
- Tesseract-OCR字符识别简介
- js报错: Uncaught RangeError: Invalid string length
- equals变量在前面或者在后面有什么区别吗?这是一个坑点
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
- 【每日一linux命令2】命令执行顺序: