mysql 没有分隔符_mysql 关于命令行下,字符串间少逗号分隔符的坑

遇到一个 mysql 的坑,关于字符串连接的问题,分享一下

mysql> select * from my_table;

+----+--------+------------+

| id | mod_id | mod_name |

+----+--------+------------+

| 1 | 20 | red |

| 2 | 20 | blue |

| 3 | 20 | pink |

| 4 | 21 | yellow |

| 5 | 21 | green |

| 6 | 21 | white |

| 7 | 21 | black |

| 8 | 30 | gray |

| 9 | 30 | purple |

| 10 | 30 | pinkpurple |

| 11 | 30 | red purple |

+----+--------+------------+

11 rows in set (0.00 sec)

原始表数据。

mysql> select * from my_table where mod_name in ("red", 'blue', 'pink', 'purple');

+----+--------+----------+

| id | mod_id | mod_name |

+----+--------+----------+

| 1 | 20 | red |

| 2 | 20 | blue |

| 3 | 20 | pink |

| 9 | 30 | purple |

+----+--------+----------+

4 rows in set (0.00 sec)

使用 where 条件查询匹配列表中的列。(正常查询)

mysql> select * from my_table where mod_name in ("red", 'blue', 'pink' 'purple');

+----+--------+------------+

| id | mod_id | mod_name |

+----+--------+------------+

| 1 | 20 | red |

| 2 | 20 | blue |

| 10 | 30 | pinkpurple |

+----+--------+------------+

3 rows in set (0.00 sec)

注意最后一组值,('pink' 'purple') 中间少了个逗号,那么查询出来的结果,默认会解释为 'pinkpurple' 字符串。

mysql> select * from my_table where mod_name = ('pink' 'purple');

+----+--------+------------+

| id | mod_id | mod_name |

+----+--------+------------+

| 10 | 30 | pinkpurple |

+----+--------+------------+

1 row in set (0.00 sec)

使用 = 符号条件精确查询,仍然解释为 两个字符串的连接结果。

mysql> select * from my_table where mod_name = 'pink' 'purple';

+----+--------+------------+

| id | mod_id | mod_name |

+----+--------+------------+

| 10 | 30 | pinkpurple |

+----+--------+------------+

1 row in set (0.00 sec)

使用 = 符号条件精确查询,取消掉括弧,仍然解释为 两个字符串的连接结果。

mysql> select * from my_table where mod_name = '' 'purple';

+----+--------+----------+

| id | mod_id | mod_name |

+----+--------+----------+

| 9 | 30 | purple |

+----+--------+----------+

1 row in set (0.00 sec)

头一个字符串为0长度字符串,那么合并即等于 purple 字符串。

mysql> select * from my_table where mod_name = 'red'' ' 'purple';

Empty set (0.00 sec)

写三个字符串,其中第一个字符串的单引号和第二个字符串的单引号中间没有空格,那么解释为未知字符。。。。。

mysql> select * from my_table where mod_name = 'red' ' ' 'purple';

+----+--------+------------+

| id | mod_id | mod_name |

+----+--------+------------+

| 11 | 30 | red purple |

+----+--------+------------+

1 row in set (0.00 sec)

'red' ' ' 'purple' ,每一组字符串用空格隔开,那么就合并为 red purple 字符串。

本来,这应该报语法错误的,但是,,,,,

唉,被坑了,,,,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值