mysql 列名中 包含斜杠或者空格的处理方式
2016-08-31 19:09
169 查看
今天客户那边遇到了一个比较奇葩的问题跑来问我,这个问题比较冷门,所以特别记录下。
问题描述
数据库的字段存在斜杠或者空格的时候,怎么用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,此时需要加入反引号来区别,但使用表名时可忽略反引号。
create table desc报错 create table `desc`成功 create table `test`成功 drop table test成功
保留字不能用于字段名,比如desc,此时也需要加入反引号,并且insert等使用时也要加上反引号。
create table `test`(`desc` varchar(255))成功 insert into test(desc) values('fxf')失败 insert into test(`desc`) values('fxf')成功
相关文章推荐
- [转]mysql使用关键字作为列名的处理方式
- 20110321-Java或者JDK/JRE路径中包含空格的处理方法
- mysql列名名称包含特殊字符的处理
- mysql使用关键字作为列名的处理方式
- 【MySQL】MySQL关键字作为列名表名的处理方式
- 20110321-Java或者JDK/JRE路径中包含空格的处理方法
- 锁表处理 SQL 错误: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- 字符串处理算法(一)检测输入字符串中是否包含连续的或者离散的test
- bash下处理包含空格的文件名
- mysql group by 处理方式的异同
- Struts2一个Action内包含多个请求处理方法(三种方式)
- 各浏览器对常用或者错误的 Content-Type 类型处理方式不一致
- linux下scp远程拷贝包含空格的目录或者文件的解决方法
- 引用 MySQL使用基于Parameter方式代码,总是提示:“Column '列名' cannot be null”
- Linux c 连接处理MYSQL (API方式)
- mySQL字符串处理之一个字段包含多个ID的解决
- 帮助类解决日期时间问题(包含从Mysql中查出来的数据后面多了个0的问题,以友好的方式显示时间的问题)
- Struts2 一个form组成的action内包含多个请求的处理方式。通配符形式。
- 命令行中的参数如果包含空格该怎么处理
- UTF8转unicode的例子和NSString包含其他字符(控制字符和前后空格)的处理