SQL查询的内容中含有单引号,怎么实现查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询的内容中含有单引号,怎么实现查询相关的知识,希望对你有一定的参考价值。

参考技术A 转义单引号 为 \' 即可

比如 要查询 的字段值 为 Jam's Toy
可以写为 select * from T where T.`name` = 'Jam\'s Toy';

为啥这个 SQL 查询中的单引号会影响计算?

【中文标题】为啥这个 SQL 查询中的单引号会影响计算?【英文标题】:Why do the single quotes in this SQL query affect the calculations?为什么这个 SQL 查询中的单引号会影响计算? 【发布时间】:2011-06-17 13:14:16 【问题描述】:
SELECT COUNT(*) FROM planets
WHERE ROUND(SQRT(POWER(('71' - coords_x), 2) +
                 POWER(('97' - coords_y), 2))) <= 17

==> 51

SELECT COUNT(*) FROM planets
WHERE ROUND(SQRT(POWER((71 - coords_x), 2) +
                 POWER((97 - coords_y), 2))) <= 17

==> 22

coords_xcoords_y 都是 TINYINT 字段,包含 [1, 100] 范围内的值。通常 MySQL 不关心是否引用了数字.. 但显然在这种情况下它确实如此。问题是:为什么?

【问题讨论】:

永远不要依赖隐式类型转换。使用适合数据类型的文字。 【参考方案1】:

我对 MySql 的 inerds 有点生疏,但字符串上的 &lt;= 采用字典排序而不是数字排序,即 '150' &lt; '17'

【讨论】:

更改比较中的引号不会影响结果;这是由引用的“71”和“97”引起的。编辑我的问题。 根据我在my answer 中引用的Type Conversion in Expression Evaluation:“在所有其他情况下,参数都作为浮点(实)数进行比较。”【参考方案2】:

从字符串到浮点数的隐式转换可能导致结果不准确。见:Type Conversion in Expression Evaluation

【讨论】:

以上是关于SQL查询的内容中含有单引号,怎么实现查询的主要内容,如果未能解决你的问题,请参考以下文章

sql语句插入的数据中含有单引号怎么办?

sql 如何查询单引号

Java 中SQL查询 查询条件本身包含单引号怎么办?

sql语句中有单引号怎么办

【SQL语句】-MYSQL中关于引号的使用

sql注入过程中单引号和多个关键字被过滤怎么办?