Py学习  »  DATABASE

如果搜索长度大于列长度的字符串,则对MySQL SELECT查询的影响

Divyanshu Jimmy • 4 年前 • 860 次点击  

我有一个列字段 “姓名” 具有 VARCHAR类型 长度 80岁。 如果我搜索长度大于80的字符串,在这种情况下,SELECT操作的行为是什么?

除了往返数据库,它会扫描整个表还是只执行一个返回,因为长度已经大于80?

SELECT * FROM TABLE WHERE name = "longgg... ...string" ;

我需要这方面的知识,因为在现有的代码库中有一个变量,用于MVC的所有层。此变量用于具有不同长度的不同列。为了节省时间和代码冗余,我只想使用相同的变量,它的验证长度比80更大。

讨论结束后,我将添加长度验证而不是 这取决于扫描所有行时的数据库验证!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51672
 
860 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Tim Biegeleisen
Reply   •   1 楼
Tim Biegeleisen    4 年前

对此我没有文档参考,但从我的观察测试结果来看,MySQL将把等式表达式的两边都转换为RHS上字符串文本的长度。也就是说,MySQL将执行以下查询:

SELECT *
FROM yourTable
WHERE CAST(name AS CHAR(100)) = CAST('longgg... ...string' AS CHAR(100));
-- assuming it has a length of 100

这种比较通常会失败,因为MySQL不会在LHS上填充少于100个字符的字符串,这意味着长度通常不会匹配。