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 数据库。

```bash
mysql -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:

```sql
set 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 模式,下划线将不再作为通配符,所以我们无需转义下划线。

```sql
SELECT * FROM userinfo WHERE userName = 'Tom_lily';

总结

字段中下划线消失的问题在 MySQL 中是比较常见的,因为 MySQL 默认将下划线作为通配符使用。为了避免这个问题,我们可以通过转义下划线或修改 sql_mode 来解决。需要注意的是在修改 sql_mode 之前需要了解其它的系统变量和 SQL 行为,避免出现其他问题。


数据运维技术 » MySQL 字段中下划线消失问题解决(mysql下划线消失)