社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

Divyanshu Jimmy • 5 年前 • 1536 次点击  

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

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

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

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

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

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

对此我没有文档参考,但从我的观察测试结果来看,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个字符的字符串,这意味着长度通常不会匹配。