MySQL中字段名和保留字冲突的解决办法
我们知道通常的SQL查询语句是这么写的:
代码如下:
select col from table;
这当然没问题,但如果字段名是“from”呢?
代码如下:
select from from table;
若真的这么写,必然出错,当字段名与MySQL保留字冲突时,可以用字符“`”将字段名括起来:
代码如下:
select `from` from table;
总结
刚发现我原先设计的数据库表里有两个字段都用了保留字(add,comment)。在insert和update的时候出错。记得sql server里好像是用[]括起来就ok了。于是试了一下,事实证明这在mySql里行不通。上网简单搜了一下发现都是说用中括号。后来又想到MySql Administrator生成的sql语句好像会把表名什么都用单引号括起来。试了一下,还是行不通。但复制生成的那个符号发现可以。确定那个符号不是单引号。一看才发现时撇号(` 就是数字1前面那个键上的)。到此问题解决。总结一下就是一句话:
在Mysql中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号(`)括起来。
时间: 2014-06-06
先看一下最简单的例子,在test中,添加一个字段,字段名为birth,类型为date类型. mysql> alter table test add column birth date; Query OK, 0 rows affected (0.36 sec) Records: 0 Duplicates: 0 Warnings: 0 查询一下数据,看看结果: mysql> select * from test; +------+--------+-----------------------
php mysql获取表字段名称和字段信息的三种方法 先给出本实例中使用的表的信息: 使用desc获取表字段信息 php代码如下: <?php mysql_connect("localhost","root",""); mysql_select_db("test"); $query = "desc student"; $result = mysql_query($query); while($row=
本文向大家介绍了使用SQL语句提取数据库所有表的表名.字段名的实例代码,在SQLserver 中进行了测试,具体内容如下: --查询所有用户表所有字段的特征 SELECT D.Name as TableName, A.colorder AS ColOrder, A.name AS Name, COLUMNPROPERTY(A.ID,A.Name, 'IsIdentity') AS IsIdentity, CASE WHEN EXISTS (SELECT 1 FROM dbo.sysobjects
代码: --库是否存在 if exists(select * from master..sysdatabases where name=N'库名') print 'exists' else print 'not exists' --------------- -- 判断要创建的表名是否存在 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsU
ASP获取数据库表名,字段名 以SQLServer为例: 复制代码 代码如下: < % SET Conn=Server.CreateObject("ADODB.Connection") Conn.Open "Server=IP地址;Provider=sqloledb;Database=库名称;UID=用户名;PWD=密码;" %> 读SqlServer库中的表名: 复制代码 代码如下: < % Set rs=Conn.OpenSch
复制代码 代码如下: < % '功能:显示数据库中表名.字段名.字段内容 '原创:wangsdong '原创文章,转载请保留此信息,谢谢 set rs=server.CreateObject("adodb.recordset") db="db1.mdb" set conn=server.CreateObject("adodb.connection") connstr="Provider=Microsoft.Jet.OLEDB.4.
一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这种情况下,就需要构建sql来动态传入表名.字段名了.现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助. 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理.下面让我们先
自从 Oracle 9i 开始,就可以通过SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以"path"或者层次元素列表的形式显示出来. 取得一个表的所有字段名,用逗号分割. select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','),2)) col from (select COLUMN_NAME,column_id from user_tab_columns where table_name='&表名
没有使用动态语句直接报错 错误的 复制代码 代码如下: alter proc testpapers as begin declare @tems nvarchar(max),@zidaun nvarchar(max) set @tems=select * from @tems order by @zidaun exec(@tems) end exec testpapers 消息 156,级别 15,状态 1,过程 testpapers,第 1 行 关键字 'select' 附近有语法错误. 消息
常用方法: 1.使用sqlite3_get_table函数 2.获取sqlite创建表的sql语句字符串,然后进行解析获取到相应的字段 3.采用配置文件的方式,将所有字段名写入配置文件 下面针对这三个方法给大家逐一详细介绍. 方法1:使用sqlite3_get_table函数 代码: char *dbname = "test.db"; int rc = sqlite3_open(dbname, &db); if (rc == SQLITE_OK) { char sql[256]
本文通过图文并茂的方式给大家展示SQL SERVER数据库表记录只保留N天图文教程,具体方法步骤请看下文: 第一步:首先设置SQL Server 代理服务为自动启动: "开始"-->"控制面板"-->"管理工具"-->"服务"-->右键" SQL SERVER 代理"-->"属性"-->"启动类型",选择 "自动启动 &q
效果: CREATE TABLE `NewTable` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT , `pid` int(10) UNSIGNED ZEROFILL NOT NULL , `name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `path` varchar(200) CHARACTER SET utf8 COLLATE utf8_gene