如何在MySQL的char列中保存Ascii码值为(128-255)的字符呢?Char(X)只能保存0-127码值的字符。

如何在MySQL的char列中保存Ascii码值为(128-255)的字符呢?Char(X)只能保存0-127码值的字符。,第1张

可以保存这个字符没有问题,

mysql>insert into test values(7,char(129))

Query OK, 1 row affected (0.00 sec)

mysql>insert into test values(7,char(130))

Query OK, 1 row affected (0.00 sec)

mysql>insert into test values(7,char(128))

Query OK, 1 row affected (0.00 sec)

mysql>insert into test values(7,char(128))

Query OK, 1 row affected (0.00 sec)

mysql>select ascii(name) from test where id=7

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

| ascii(name) |

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

| 129 |

| 130 |

| 128 |

| 128 |

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

4 rows in set (0.00 sec)

mysql>select * from test where id=7

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

| id | name |

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

|7 | ? |

|7 | ? |

|7 | €|

|7 | €|

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

4 rows in set (0.00 sec)

显示为?是因为当前字符集的原因,试试改你的数据库字符集

这个好实现。在创建表的时候,为user_name字段,指定其排序规则为:utf8mb4_general_ci,为user_password字段,指定其排序规则为:utf8mb4_bin。

然后你查询的时候,where user_name = 'ab'会把表中user_name的值为:‘ab’、‘Ab’、‘AB’、‘aB’的数据行都查询出来。

而当使用 where user_password = 'ab';只会把表中user_password的值为:‘ab’的数据行查询出来。

另外,真正项目实践中,密码字段不会明文存储在表中的,都是经过各种加密算法,加密后生成一个字符串之后在存储在表中。判断密码匹配的时候,也是根据用户输入的密码,经过相同的算法再次加密后,再和数据库中存储的加密字符串进行比较。所以我觉得你的密码字段没有必要这个这个大小写敏感的设置。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7449924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存