mysql下载不了怎么办mysql字段名中包含点_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')成功
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论