返回顶部
首页 > 资讯 > 数据库 >如何进行MYSQL特殊字符的处理
  • 301
分享到

如何进行MYSQL特殊字符的处理

2024-04-02 19:04:59 301人浏览 安东尼
摘要

这篇文章给大家介绍如何进行Mysql特殊字符的处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。单引号,以及行尾的斜杠引起的困惑:这一次的问题,我们直接从实际的工作中说起:工作内容简介

这篇文章给大家介绍如何进行Mysql特殊字符的处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

单引号,以及行尾的斜杠引起的困惑:

这一次的问题,我们直接从实际的工作中说起:

工作内容简介: 有一批用户ID存在文件里,需要从数据库里删除?

做这个事情,可能有很多的方法:
1, 把ID导入到数据库中,用sql直接做表关联去删除 ;
2, 用shell(或其他语言)写个小程序,根据文件里的ID做一个FOR 循环,然后在mysql中去删除 ;
3, 用sed直接把ID转成delete语句,完了直接运行即可;

[@more@]

由于数据量较大(1.6亿),显然,我会用偷懒以及简单的方法3 :
----------------------------------------------
[root@im_ctuallot1 tmp]# cat loginid.txt
xouqun76818
ogku15mtb7c
jinlongkaikai@163.com
曾朴绍283902
轻舞飞扬061129付了

[root@im_ctuallot1 tmp]# sed  -e "s/^/delete from ctulog.db_allot_center_64 where long_id='/g" -e "s/$/';/g"  loginid.txt > loginid.sql
[root@im_ctuallot1 tmp]# cat loginid.sql
delete from ctulog.db_allot_center_64 where long_id='xouqun76818';
delete from ctulog.db_allot_center_64 where long_id='ogku15mtb7c';
delete from ctulog.db_allot_center_64 where long_id='jinlongkaikai@163.com';
delete from ctulog.db_allot_center_64 where long_id='曾朴绍283902';
delete from ctulog.db_allot_center_64 where long_id='轻舞飞扬061129付了';

mysql -uroot -h227.0.0.1 --default-character-set=latin1  --force ctulogdb < loginid.sql

--force 是防止某个SQL出现错误,而导致整个任务终止;
---------------------------------------------

搞定。
这看似非常简单的方法,也暴露出很多的问题,结果1.6行数据只成功删除了3300W,任务失败;
其实是我把这个任务想得太简单了: 在用户ID中存在任何可能的字符 ,如:
bao'pijkl
tingting831118

注意,在用户ID中有" ' ", 在行末尾有:"  ";
我们把这样的语句渗杂到其他ID中,我们看会有怎么的效果;

[root@im_ctuallot1 tmp]# cat loginid.txt
xouqun76818
bao'pijkl
ogku15mtb7c
jinlongkaikai@163.com
曾朴绍283902
tingting831118
轻舞飞扬061129付了

[root@im_ctuallot1 tmp]# sed  -e "s/^/delete from ctulog.db_allot_center_64 where long_id='/g" -e "s/$/';/g"  loginid.txt > loginid.sql
[root@im_ctuallot1 tmp]# cat loginid.sql
delete from ctulog.db_allot_center_64 where long_id='xouqun76818';
delete from ctulog.db_allot_center_64 where long_id='bao'pijkl';
delete from ctulog.db_allot_center_64 where long_id='ogku15mtb7c';
delete from ctulog.db_allot_center_64 where long_id='jinlongkaikai@163.com';
delete from ctulog.db_allot_center_64 where long_id='曾朴绍283902';
delete from ctulog.db_allot_center_64 where long_id='tingting831118';
delete from ctulog.db_allot_center_64 where long_id='轻舞飞扬061129付了';

[root@im_ctuallot1 tmp]# mysql -uroot -h227.0.0.1 --default-character-set=latin1  --force ctulog < loginid.sql
ERROR at line 2: Unknown command '''.
ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MySQL Server version for the right syntax to use near 'pijkl';
delete from ctulog.db_allot_center_64 where long_id='ogku15mtb7c';
delet' at line 1

会出现一堆这样的错误;
如果你手动把以上SQL贴到MYSQL中去执行:
root@127.0.0.1 : ctulog 15:59:04>
root@127.0.0.1 : ctulog 15:59:04> delete from ctulog.db_allot_center_64 where long_id='xouqun76818';
Query OK, 0 rows affected (0.00 sec)

root@127.0.0.1 : ctulog 15:59:05> delete from ctulog.db_allot_center_64 where long_id='bao'pijkl';
   '> delete from ctulog.db_allot_center_64 where long_id='ogku15mtb7c';
   '> delete from ctulog.db_allot_center_64 where long_id='jinlongkaikai@163.com';
   '> delete from ctulog.db_allot_center_64 where long_id='曾朴绍283902';
   '> delete from ctulog.db_allot_center_64 where long_id='tingting831118';
ERROR:
Unknown command '''.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pijkl';
delete from ctulog.db_allot_center_64 where long_id='ogku15mtb7c';
delet' at line 1
root@127.0.0.1 : ctulog 15:59:05> delete from ctulog.db_allot_center_64 where long_id='轻舞飞扬061129付了';
Query OK, 0 rows affected (0.00 sec)

root@127.0.0.1 : ctulog 15:59:10>

只有第一条,最后一条执行成功了; 

到这里我想大家应该明白了,
最关键的是单引号的不匹配导致MYSQL不能正确认识完整的SQL;
注意,在用户ID中,出现 单个单引号,或以""结束,都会有这个问题;

问题找到了,其实解决很简单,就是先把用户ID中的单引号和"$"作一个转换:
[root@im_ctuallot1 tmp]# cat loginid.txt
xouqun76818
bao'pijkl
ogku15mtb7c
jinlongkaikai@163.com
曾朴绍283902
tingting831118
轻舞飞扬061129付了
[root@im_ctuallot1 tmp]# sed -e "s///g" -e "s/'/'/g" -e "s/^/delete from ctulog.db_allot_center_64 where long_id='/g" -e "s/$/';/g"  loginid.txt > loginid.sql
[root@im_ctuallot1 tmp]# cat loginid.sql
delete from ctulog.db_allot_center_64 where long_id='xouqun76818';
delete from ctulog.db_allot_center_64 where long_id='bao'pijkl';
delete from ctulog.db_allot_center_64 where long_id='ogku15mtb7c';
delete from ctulog.db_allot_center_64 where long_id='jinlongkaikai@163.com';
delete from ctulog.db_allot_center_64 where long_id='曾朴绍283902';
delete from ctulog.db_allot_center_64 where long_id='tingting831118';
delete from ctulog.db_allot_center_64 where long_id='轻舞飞扬061129付了';
[root@im_ctuallot1 tmp]#

是这样的SQL执行就不会有任何问题。

就这么简单的问题,耗了5个小时,还是SHARE一下以免大家在这里浪费时间。

关于如何进行MYSQL特殊字符的处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 如何进行MYSQL特殊字符的处理

本文链接: https://lsjlt.com/news/66937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行MYSQL特殊字符的处理
    这篇文章给大家介绍如何进行MYSQL特殊字符的处理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。单引号,以及行尾的斜杠引起的困惑:这一次的问题,我们直接从实际的工作中说起:工作内容简介...
    99+
    2024-04-02
  • 怎么对@PathVariable中的特殊字符进行处理
    这期内容当中小编将会给大家带来有关怎么对@PathVariable中的特殊字符进行处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 @GetMapping(value="/user/...
    99+
    2023-06-06
  • json特殊字符串如何处理
    在处理 JSON 中的特殊字符串时,可以使用以下方法:1. 转义特殊字符:对于包含特殊字符的字符串,可以使用反斜杠(\)来转义它们。...
    99+
    2023-09-12
    json
  • Python处理mysql特殊字符的问题
    有的时候我们会去扫表,然后拿出扫的结果再到另一张表里去查信息。比如下面一段 index_sql_str = "select %s from user where %s = %d" % ("so...
    99+
    2022-05-17
    Python mysql 特殊字符
  • mysql如何去掉字符串中的特殊字符
    如何从 mysql 字符串中移除特殊字符?使用 regexp_replace() 函数匹配所有非字母数字字符和空格。使用 translate() 函数将特殊字符翻译为空字符串。...
    99+
    2024-06-14
    mysql
  • 批处理bat如何判断是否特殊字符
    这篇文章给大家分享的是有关批处理bat如何判断是否特殊字符的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。批处理判断是否为特殊字符用于判断输入的一个字符是否为"&^>中的符号。注意,匹配字符...
    99+
    2023-06-08
  • python处理http请求中特殊字符(
    直接看代码吧# encoding:utf-8from urllib.parse import quoteimport urllib.requestimport stringimport jsonurl = quote('http://tes...
    99+
    2023-01-31
    特殊字符 python http
  • thinkphp如何清除特殊字符
    本篇内容介绍了“thinkphp如何清除特殊字符”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.使用PHP内置函数PHP提供了很多函数可以...
    99+
    2023-07-05
  • python3如何去除字符串中的特殊字符
    在Python中用replace()函数操作指定字符 常用字符unicode的编码范围: 数字:\u0030-\u0039 汉字:\u4e00-\u9fa5 大写字母:\u0041-...
    99+
    2023-05-17
    python3去除特殊字符 python处理字符串
  • Oracle怎么处理VARCHAR列中的特殊字符
    在Oracle中处理VARCHAR列中的特殊字符,可以使用函数或者字符串替换的方法来处理。下面是一些常用的方法: 使用REPLAC...
    99+
    2024-04-09
    Oracle
  • linux终端对特殊字符怎么处理
    在Linux终端中,特殊字符通常由反斜杠(\)进行转义处理。以下是一些常见的特殊字符及其转义方式:1. 反斜杠(\):需要使用两个反...
    99+
    2023-09-05
    linux
  • 学习PHP中如何处理特殊字符转换单引号
    在PHP开发过程中,处理特殊字符是一个常见的问题,尤其是在字符串处理中经常会遇到特殊字符转义的情况。其中,将特殊字符转换单引号是一个比较常见的需求,因为在PHP中,单引号是一种常用的字...
    99+
    2024-04-02
  • php如何删除特殊字符串
    这篇文章主要介绍“php如何删除特殊字符串”,在日常操作中,相信很多人在php如何删除特殊字符串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何删除特殊字符串”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-20
  • php如何替换掉特殊字符
    PHP是一种流行的服务器端编程语言,许多网站都使用它来处理网页和表单的数据。然而,当用户输入特殊字符时,PHP会遇到一些问题,例如代码注入、SQL注入、跨站脚本攻击等安全问题。因此,如何正确地识别和替换掉特殊字符就显得尤为重要。一些特殊字符...
    99+
    2023-05-14
  • php如何把特殊字符转义
    ...
    99+
    2023-07-06
  • php中如何转义特殊字符
    本篇内容主要讲解“php中如何转义特殊字符”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php中如何转义特殊字符”吧!反斜线(\)在PHP中,反斜线()是用来转义特殊字符的最常见的字符。当我们需...
    99+
    2023-07-05
  • java项目中怎么对特殊字符进行校验
    这期内容当中小编将会给大家带来有关java项目中怎么对特殊字符进行校验,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.关于Character.UnicodeBlock的介绍CJK的意思是“Chinese...
    99+
    2023-05-31
    java ava 目中
  • Spring Boot如何实现敏感词及特殊字符过滤处理
    这篇文章主要介绍“Spring Boot如何实现敏感词及特殊字符过滤处理”,在日常操作中,相信很多人在Spring Boot如何实现敏感词及特殊字符过滤处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spr...
    99+
    2023-06-20
  • java特殊字符转义处理的方法是什么
    在Java中,可以使用反斜杠(\)来转义特殊字符。以下是一些常见的特殊字符转义序列:- \n:换行- \t:制表符- \r:回车- ...
    99+
    2023-08-11
    java
  • java特殊字符转义处理的方法有哪些
    使用双反斜杠"\“: 在特殊字符前添加一个反斜杠来转义。例如,要表示一个双引号字符”,可以写成"。 使用...
    99+
    2024-03-01
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作