在SQL中批量查找和替换控制字符

时间:2014-02-21 19:26:31

标签: mysql replace ascii control-characters

ASCII控制字符正在寻找进入我经常维护的数据库的方式。虽然我计划实施防止它们INSERT进入SQL的方法,但我必须首先处理数据库的字符。< / p>

对于初学者,我知道可以使用SQL执行查找和替换 ...

UPDATE [table_name] 
SET [field_name]=REPLACE([field_name],'[string_to_find]','[string_to_replace]');

PHP允许您使用数组用其他东西替换多个项目......

$result = str_ireplace(array('1','2','3','4','5'),'0',$my_string);

因此,我们可以通过一种方式构建SQL查询来替换多个ASCII控制字符,而不是循环中的SQL查询吗?

同样非常重要的是如何我们替换那些控制字符(例如dec,oct,hex)?

另外我已经读过回车是控制字符0~31的一部分所以显然我们不想删除它们以确保换行保留,除非我丢失什么事呢?

这是我现在要去的参考页面......

http://www.ascii-code.com/


我将XHTML编码为application / xhtml + xml,并将以下内容测试为 example1.xhtml ,并在 Firefox 中使用 NO BYTE ORDER MARK(BOM)进行显式打开 ...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>

<body>

<div>
<p>&#000;&#001;&#002;&#003;&#004;&#005;&#006;&#007;&#008;&#009;
&#010;&#011;&#012;&#013;&#014;&#015;&#016;&#017;&#018;&#019;
&#020;&#021;&#022;&#023;&#024;&#025;&#026;&#027;&#028;&#029;
&#030;&#031;</p>
</div>

</body>
</html>

以下是唯一可以在不创建格式错误的XML的情况下使用的字符,另存为 example2.xhtml ,并在 Firefox 中使用 NO BYTE ORDER MARK打开显式屏幕(BOM) ...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>

<body>

<div>
<p>&#009;&#010;&#013;</p>
</div>

</body>
</html>

我们想要在SQL中删除的那些工作字符是......

  • 09 - 水平标签

  • 10 - 换行

  • 13 - 回车

1 个答案:

答案 0 :(得分:0)

这适用于初学者,但不一定是大众......

UPDATE a_log SET useragent=replace(useragent,char(4),'');
UPDATE a_log SET useragent=replace(useragent,char(5),'');

我所做的是首先从Firefox复制XML解析错误。执行复制和粘贴时,Windows 7剪贴板 正确保留ASCII控制字符。然后我将违规文本粘贴到本网站的表格中......

http://www.asciivalue.com/

找到我使用 DEC OCT (他们匹配的列值)的行来引用此网站上的字符...

http://www.ascii-code.com/

......经过一番研究后,我能够将几行清理出来,以清除最终导致我的XML格式错误的违规字符。

我仍然会接受一个更好的答案,因为重点是更多的拉网风格的修复。此外,我还是主动承认,对于我仍然必须创建,测试和实施阻止 ASCII控制字符插入的问题的措施更多的反动立场MySQL开始;因此,我仍在寻找一种良好的方法来阻止这个问题。

如果有人问同一个问题并遇到问题,他们至少会有一些解决问题的有效方法。