MySQL 字段中下划线消失问题解决(mysql下划线消失)
MySQL 字段中下划线消失问题解决
在使用 MySQL 数据库时,有时会遇到字段中下划线消失的情况,这可能是因为MySQL默认将下划线作为通配符使用,从而将其过滤掉。这个问题在数据恢复以及程序编写中都会导致麻烦。下面本文将介绍解决这个问题的方法。
解决方法一:转义下划线
在 SQL 语句中,我们可以通过使用反斜杠来转义下划线。举例来说,如果我们想查询一个名字叫 Tom_lily 的用户,应该这样写 SQL 语句:
“`sql
SELECT * FROM userinfo WHERE userName = ‘Tom\_lily’;
在这个 SQL 语句中,我们在下划线前面加了一个反斜杠,从而告诉 MySQL 这个下划线不是通配符而是一个普通的字符。
解决方法二:修改 sql_mode
sql_mode 是 MySQL 的一个系统变量,它决定了 MySQL 报错的行为以及 SQL 语句的解释行为。在这个问题中,我们可以通过修改 sql_mode 来解决这个问题。具体步骤如下:
1. 登录 MySQL 数据库。
```bashmysql -u root -p
2. 查看当前的 sql_mode。
“`sql
SELECT @@sql_mode;
在结果中应该会看到类似这样的设置: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION。这个设置决定了 MySQL 在解释 SQL 时会不会将下划线作为通配符。
3. 修改 sql_mode。
我们可以通过以下命令来修改 sql_mode:
```sqlset sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES';
在修改之后,我们应该将 sql_mode 设置为 ANSi_QUOTES,在这个模式下 MySQL 将会禁用掉后续的 ANSI_QUOTES 模式,从而保留下划线。
4. 重启 MySQL。
我们可以使用以下命令重启 MySQL:
“`bash
sudo /etc/init.d/mysql restart
5. 测试查询语句。
现在我们可以测试一下之前遇到的查询语句是否可以顺利执行。因为在 sql_mode 中启用了 ANSi_QUOTES 模式,下划线将不再作为通配符,所以我们无需转义下划线。
```sqlSELECT * FROM userinfo WHERE userName = 'Tom_lily';
总结
字段中下划线消失的问题在 MySQL 中是比较常见的,因为 MySQL 默认将下划线作为通配符使用。为了避免这个问题,我们可以通过转义下划线或修改 sql_mode 来解决。需要注意的是在修改 sql_mode 之前需要了解其它的系统变量和 SQL 行为,避免出现其他问题。