请求协助:修正SQL语句以筛选Sample列中仅含5个字符的数据
筛选Sample列值为5个字符行的正确SQL语句
你的原语句语法有误,LEFT()函数用法不对且缺少判断条件,要筛选Sample列值恰好是5个字符的行,用以下几种写法即可:
基础写法(适配单字节字符,如英文、数字)
SELECT * FROM dump WHERE LENGTH(Sample) = 5;
兼容多字节字符的写法(如中文、特殊符号)
如果Sample列可能包含多字节字符,用CHAR_LENGTH()更准确——它会把每个多字节字符算作1个长度:
SELECT * FROM dump WHERE CHAR_LENGTH(Sample) = 5;
额外处理:去除首尾空格后判断
如果担心数据里有隐藏的首尾空格导致长度判断不准,可以先做去空格处理:
SELECT * FROM dump WHERE CHAR_LENGTH(TRIM(Sample)) = 5;
原语句select * from dump where Sample left(5);的问题在于,LEFT(Sample, 5)是截取Sample列的前5个字符,但你没有把它和任何值做比较,数据库无法理解你的筛选逻辑,因此无法正常执行。我们需要的是判断列值的总长度等于5,所以要用长度函数配合等于条件来实现。
内容的提问来源于stack exchange,提问作者Akshay Chari
相关产品推荐
相关产品推荐

