【请教】mysql 插入数据如何转义分号

溺水的鱼 2009-03-11 11:45:14
我现在要插入mysql数据库一批数据,我是用程序读取文件插入数据库的,程序中用分号判断是否是一句sql语句。
如果插入的数据里面有分号(;)的话,会有问题。
现在不能改变程序,能不能把;转义一下,插入之后在读取出来还是(;)呢。
请高手给看看。
...全文
2072 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichengzhe11 2009-04-01
  • 打赏
  • 举报
回复
20楼写的是对的
hyfufo 2009-03-30
  • 打赏
  • 举报
回复
mysql> select ';' as aa ;
+----+
| aa |
+----+
| ; |
+----+

用引号引起来没问题啊.
CodyProgrammer 2009-03-23
  • 打赏
  • 举报
回复
学习了。
溺水的鱼 2009-03-11
  • 打赏
  • 举报
回复
DROP TABLE IF EXISTS `mocha_helper_content`;

CREATE TABLE `mocha_helper_content` (
`HELPERID` bigint(20) NOT NULL auto_increment,
`DESCRIPTION` varchar(1024) NOT NULL,
`CONTENT_CN` text,
`CONTENT_EN` text,
`TYPEID` int(11) default NULL,
`DELETEFLAG` int(11) default '1',
`MODIFYDATE` timestamp NOT NULL default CURRENT_TIMESTAMP,
`MODIFYBY` varchar(50) default NULL,
PRIMARY KEY (`HELPERID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

insert into `mocha_helper_content`(`HELPERID`,`DESCRIPTION`,`CONTENT_CN`,`CONTENT_EN`,`TYPEID`,`DELETEFLAG`,`MODIFYDATE`,`MODIFYBY`) values (1,'第一步-邮件服务器设置','<P><STRONG>邮件报警设置:</STRONG>设置发送邮件报警的服务器、发送邮箱等信息。<BR>如果此项未设置,那么用户将接收不到邮件报警。<BR>另外,当管理员在发现资源时,如果出现意外,可以使用所设置的邮件服务器发送错误报告。<BR>设置之后,可进入下一步进行资源初始化。<BR>如果不需要设置,可跳过此步,直接进行资源初始化或用户初始化,也可以直接点击“完成”完成初始化,初始化将不再出现。</P>','',1,1,'2009-02-26 20:47:27',NULL),(2,'第二步-资源初始化-初始化方式选择','<P>这个页面提供的是可进行资源初始化的方式,选择任何一种方式,都能够在酷点的引导下快速添加一批需要监控的资源。<BR><STRONG>全网发现:</STRONG>输入核心设备的IP地址,酷点就能够通过该地址发现并组件您的网络拓扑。<BR><STRONG>子网发现:</STRONG>指定局域网中的一个子网,对子网下的所有设备和拓扑结构进行发现。<BR><STRONG>Excel导入:</STRONG>如果您需要大批量的添加要监控的设备,以及应用服务器、数据库等资源,可以采用这种方式,酷点已经为您提供了定制好的模板,您只需要下载该模板,并按照模板的内容填写,上传填写好的模板文档,就可以把模板中的所有资源加入酷点的监控。<BR>如果不需要进行资源初始化,可以直接点击“用户初始化”进入用户初始化页面,或者点击“完成”完成初始化,初始化将不再出现。</P>','',1,1,'2009-02-26 20:46:10',NULL),(3,'第二步-资源初始化-全网发现-输入发现信息','选择初始化方式之后,进入发现信息输入界面,此时可点击箭头图标展开第一步。<BR>此步中需要输入核心设备IP地址和共同体名。<BR><STRONG>核心设备IP地址:</STRONG>请输入局域网中核心设备的IP地址。<BR><STRONG>共同体名:</STRONG>请输入局域网中待发现设备的只读共同体名。可输入多个,以\59分隔。<BR>输入核心设备IP地址和共同体名之后,点击“开始”,开始进行全网发现。 ','',1,1,'2009-02-26 20:49:03',NULL),(4,'第二步-资源初始化-全网发现-发现','<P>本步为发现过程,展现发现的进度百分、耗用时间,以及发现结果和日志。<BR>如果要停止进行全网发现,可点击“停止”按钮。<BR><STRONG>发现报告:</STRONG>列出全网发现的发现设备总数,以及各类设备的个数。<BR><STRONG>发现日志:</STRONG>列出发现过程的详细日志,如果有发现不成功的设备,在日志中列出不成功的原因。<BR>全网发现结束之后,如果要监控已发现设备,请点击“开始监控”按钮,将已发现设备加入监控。</P>','',1,1,'2009-02-26 20:49:32',NULL),(5,'第二步-资源初始化-全网发现-监控','本步为已发现设备加入监控的过程,展现加入监控的进度百分、耗用时间,以及发现结果和日志。<BR><STRONG>加入监控报告:</STRONG>列出已加入监控的设备个数和类别。<BR><STRONG>监控日志:</STRONG>列出监控过程的详细日志,如果有监控不成功的设备,在日志中列出不成功的原因。<BR>加入监控结束,全网发现的整个过程结束了,此时可回到“初始化方式选择”选择其他方式继续初始化,或进入下一步,进行用户初始化。 ','',1,1,'2009-02-26 20:36:50',NULL),(6,'第二步-资源初始化-子网发现-输入发现信息','选择初始化方式之后,进入发现信息输入界面,此时可点击箭头图标展开第一步。<BR>此步中需要输入子网地址和子网掩码。<BR><STRONG>子网地址:</STRONG>局域网中带发现子网的IP地址。<BR><STRONG>子网掩码:</STRONG>子网掩码的地址。<BR>添加子网之后,点击“开始”即可发现所添加的子网。 ','',1,1,'2009-02-26 20:38:03',NULL),(7,'第二步-资源初始化-子网发现-发现','本步为发现过程,展现发现的进度百分、耗用时间,以及发现结果和日志。<BR>如果要停止进行子网发现,可点击“停止”按钮。<BR><STRONG>发现报告:</STRONG>列出子网发现的发现设备总数,以及各类设备的个数。<BR><STRONG>发现日志:</STRONG>列出发现过程的详细日志,如果有发现不成功的设备,在日志中列出不成功的原因。<BR>子网发现结束之后,如果要监控已发现设备,请点击“开始监控”按钮,将已发现设备加入监控。 ','',1,1,'2009-02-26 20:39:23',NULL),(8,'第二步-资源初始化-子网发现-监控','本步为已发现设备加入监控的过程,展现加入监控的进度百分、耗用时间,以及发现结果和日志。<BR><STRONG>加入监控报告:</STRONG>列出已加入监控的设备个数和类别。<BR><STRONG>监控日志:</STRONG>列出监控过程的详细日志,如果有监控不成功的设备,在日志中列出不成功的原因。<BR>加入监控结束,子网发现的整个过程结束了,此时可回到“初始化方式选择”选择其他方式继续初始化,或进入下一步,进行用户初始化。','',1,1,'2009-02-26 20:40:14',NULL),(9,'第二步-资源初始化-Excel导入-输入发现信息','<P>选择初始化方式之后,进入发现信息输入界面,此时可点击箭头图标展开第一步。<BR>在这个步骤,添加资源是通过上传Excel文件来实现的。<BR><STRONG>首先,</STRONG>可点击“下载”下载Excel文件模板;<BR><STRONG>然后,</STRONG>填写模板中的内容,<STRONG>填写完毕,</STRONG>点击“浏览”按钮,把Excel文件上传。<BR>这两步完成之后,点击“发现”即可导入Excel文件里的资源列表。</P>','',1,1,'2009-02-26 20:52:41',NULL),(10,'第二步-资源初始化-Excel导入-发现','<P>本步为发现过程,展现发现的进度百分、耗用时间,以及发现结果。<BR><STRONG>发现结果:</STRONG>列出Excel导入的资源个数,以及导入成功和失败的个数。<BR>点击Excel图标可导出发现报告。<BR>Excel导入结束之后,可回到“初始化方式选择”选择其他方式继续初始化,或进入下一步,进行用户初始化。</P>','',1,1,'2009-02-26 20:42:30',NULL),(11,'第三步-用户初始化','本页面用于进行用户的添加和编辑。<BR>Mocha KoolPoint的默认管理员为admin,不可进行删除。<BR>admin可在此页面点击“新建”按钮添加新用户。添加的用户出现在用户列表中。<BR>在用户列表中,admin可点击用户名,在弹出页面编辑用户信息,或在列表中选中用户,点击“删除”按钮删除所选用户。<BR>可跳过“用户初始化”,直接点击“完成”进入完成页面,完成系统的初始化。 ','',1,1,'2009-02-26 20:43:43',NULL),(12,'第四步-完成','<P>当到达此页面,标志着系统初始化完成,您可以按照此页面中的向导查看您的初始化成果,或进入系统中的其他模块进行操作、浏览。</P>','',1,1,'2009-02-26 20:44:26',NULL);

DROP TABLE IF EXISTS `mocha_helper_type`;

CREATE TABLE `mocha_helper_type` (
`TYPEID` int(11) NOT NULL auto_increment,
`TYPE` varchar(100) NOT NULL,
`DELETEFLAG` int(11) default '0',
`MODIFYDATE` timestamp NOT NULL default CURRENT_TIMESTAMP,
`MODIFYBY` varchar(50) default NULL,
PRIMARY KEY (`TYPEID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

insert into `mocha_helper_type`(`TYPEID`,`TYPE`,`DELETEFLAG`,`MODIFYDATE`,`MODIFYBY`) values (1,'快速开始',0,'2009-02-26 20:32:33',NULL);


这是实际语句
ACMAIN_CHM 2009-03-11
  • 打赏
  • 举报
回复
insert table_name ('1',' '); 



这样在mySQL下是可以的啊。贴出你实际语句。包括你程序中的语句。
溺水的鱼 2009-03-11
  • 打赏
  • 举报
回复
insert table_name ('1',' \59');
数据显示为 1  59
溺水的鱼 2009-03-11
  • 打赏
  • 举报
回复
我知道\59表示;,但是改成\59之后插入数据库编程59了
WWWWA 2009-03-11
  • 打赏
  • 举报
回复

MySQL的转义字符“\”
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
比如将判断结束改为## OR $$
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
不能修改程序应该不行
ACMAIN_CHM 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 alex197963 的回复:]
DROP TABLE IF EXISTS `mocha_helper_content`;

CREATE TABLE `mocha_helper_content` (
`HELPERID` bigint(20) NOT NULL auto_increment,
`DESCRIPTION` varchar(1024) NOT NULL,
`CONTENT_CN` text,
`CONTENT_EN` text,
`TYPEID` int(11) default NULL,
`DELETEFLAG` int(11) default '1',
`MODIFYDATE` timestamp NOT NULL default CURRENT_TIMESTAMP,
`MODIFYBY` varchar(50) default N…
[/Quote]

首先,mySQL命令行下建议你测试 insert into yourTable value ('aa;aa');

这种应该是没有问题的。
如果上句测试在你的mysql中没有问题,则建议无需在你的程序中把;变换成其它的字符。

问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧

贴出你的实际环境及出错信息。
你是直接在mysql命令行下执行的,还是在某个程序中?
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
对,如果要用REPLACE,就要先替换成一个非常特殊的字符串才行,
否则用CHAR(59)吧
溺水的鱼 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 WWWWA 的回复:]
or
replace('123pp456','pp',';')
[/Quote]
那如果内容确实包含pp如何处理
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
or
replace('123pp456','pp',';')
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 alex197963 的回复:]
我想把插入内容里面的分号,改成其他符号,但是真正插入数据库里面还是分号
[/Quote]
比如要插入123;456
insert into tt values (CONCAT(123,CHAR(59),456))
溺水的鱼 2009-03-11
  • 打赏
  • 举报
回复
我想把插入内容里面的分号,改成其他符号,但是真正插入数据库里面还是分号
溺水的鱼 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 WWWWA 的回复:]
OR 用CHAR(59)
[/Quote]

那就直接插入了CHAR(59)了。。。
insert into table_name ('char(59)')....这样吗?
还是我理解错了
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
select char(59),';\;'
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
OR 用CHAR(59)
WWWWA 2009-03-11
  • 打赏
  • 举报
回复
直接在MYSQL中运行你的语句,是没有问题的,你是在程序中?
加载更多回复(1)

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧