一直没注意到的一个 mysql 的问题-字符串到 int 的自动转换

2014-10-17 18:58:23 +08:00
 geew
感觉好坑爹啊, 由这个引起的:




查了下:
http://cqjava.iteye.com/blog/1042182

大家注意到这个问题不, 好恶心
4571 次点击
所在节点    MySQL
11 条回复
Livid
2014-10-17 19:39:13 +08:00
不熟悉 torndb,但是疑问是 torndb 里不需要对输入的参数做任何 escape 处理么?
11138
2014-10-17 19:55:47 +08:00
这个字符串自动转换成数字的问题,除了MySQL,还有Perl、PHP等编程都是这样啊。
geew
2014-10-17 20:17:47 +08:00
@Livid 应该会做 但这里跟torndb没有关系了 就是mysql的自动转换....
geew
2014-10-17 20:18:05 +08:00
@11138 还真没注意到这个 给同事看了也觉得不可思议
Livid
2014-10-17 20:19:02 +08:00
@geew 如果有 escape 的话,也会发生这样的转换么。
geew
2014-10-17 20:19:05 +08:00
@Livid livid数据库层都用什么库呢? mysqldb? sqlalchemy? 还是其他的
geew
2014-10-17 20:20:25 +08:00
@Livid %s传进去的都会处理 我做过测试了 然后传给mysql 但字符串到int的转换是mysql做的
Livid
2014-10-17 20:20:44 +08:00
geew
2014-10-17 20:36:29 +08:00
@Livid 看了torndb的源码 它基本什么也没做, 都是把参数传到mysqldb来处理的, mysqldb的处理:
https://gist.github.com/anonymous/da0a0757bea150bc96b0

试了下, 结果类似这样子的:
https://gist.github.com/anonymous/7997605274392aa54020
11138
2014-10-17 20:42:16 +08:00
如果是int类型,最好不要加引号,“好像”会影响效率。
cowpea
2017-05-25 15:00:04 +08:00
要从一个 json 字段取数据,小于 5.7 没有 json 处理函数,0+substring(test,8) test 形如:{"id":"5641","de
=-=在这里还是蛮有用的嘛

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/139624

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX