首页
学习
活动
专区
圈层
工具
发布

mysql 截取后两位

基础概念

MySQL 是一个关系型数据库管理系统,广泛用于存储和管理数据。在 MySQL 中,截取字符串的操作可以通过多种函数实现,其中 SUBSTRINGRIGHT 函数是最常用的两种。

相关优势

  • 灵活性:MySQL 提供了多种字符串处理函数,可以满足不同的截取需求。
  • 高效性:MySQL 的字符串函数经过优化,能够高效地处理大量数据。

类型

  1. 使用 SUBSTRING 函数
  2. 使用 SUBSTRING 函数
  3. 其中,column_name 是要截取的列名,length 是从右往左数的字符数。
  4. 使用 RIGHT 函数
  5. 使用 RIGHT 函数
  6. 其中,column_name 是要截取的列名,length 是要截取的字符数。

应用场景

假设我们有一个用户表 users,其中有一个字段 phone 存储用户的电话号码。我们想要截取电话号码的后两位,以便进行某些特定的处理。

示例代码

代码语言:txt
复制
-- 使用 SUBSTRING 函数
SELECT SUBSTRING(phone, LENGTH(phone) - 1, 2) AS last_two_digits FROM users;

-- 使用 RIGHT 函数
SELECT RIGHT(phone, 2) AS last_two_digits FROM users;

遇到的问题及解决方法

问题:为什么截取的结果不正确?

原因

  • 可能是因为 length 参数设置错误。
  • 可能是因为字符串中包含特殊字符或空格。

解决方法

  • 确保 length 参数设置正确。
  • 使用 TRIM 函数去除字符串两端的空格。
代码语言:txt
复制
SELECT SUBSTRING(TRIM(phone), LENGTH(TRIM(phone)) - 1, 2) AS last_two_digits FROM users;

问题:如何处理空值或非字符串类型的数据?

解决方法

  • 使用 COALESCE 函数处理空值。
  • 使用 CASTCONVERT 函数将非字符串类型的数据转换为字符串。
代码语言:txt
复制
SELECT COALESCE(SUBSTRING(CAST(phone AS CHAR), LENGTH(CAST(phone AS CHAR)) - 1, 2), 'N/A') AS last_two_digits FROM users;

参考链接

希望这些信息对你有所帮助!如果有更多问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 浮点数保留小数点后两位(浮点数保留小数点后两位)

    今天说一说浮点数保留小数点后两位(浮点数保留小数点后两位),希望能够帮助大家进步!!! 一。...前沿 有时候,你拿到的数据精度很高,但是你不需要向用户展示得那么精准,一是对用户没有太大意义,二是看上去不好看,为此,我们往往需要截取一定得精度,今天就给大家分享一样如何实现此功能。 二。...方法 在这里,我们的功能是将一个数转换为小数点后两位。...同理,对于3.141592653,四舍五入,保留小数点后一位是3.1,保留小数点后两位是3.14。 三。...究其根源,其实很简单,对于将浮点数保留两位小数,采取的方法是,将其乘以需要保留小数点后的位数个零,比如,保留两位,就乘以100,保留5位,乘以100000。然后对得到的数四舍五入。

    4K20

    MySQL高级--性能优化查询截取分析

    查询截取分析 4.1 优化步骤 慢查询的开启并捕获。 explain + 慢SQL分析。 show profile查询SQL在MySQL服务器里面的执行细节和生命周期情况。...排序默认是升序排序,但是此时非要实现降序排序,这就会导致MySQL发生内排序(filesort) ORDER BY a DESC,b DESC : 此时索引生效,此时都是降序。...4.3.2 效率声明 MySQL支持两种方式的排序,FileSort以及Index,Index效率高,它指MySQL扫描索引本身完成排序。FoleSort方式效率较低。...4.3.4 如果不在索引列上,filesort有两种算法 单路排序:从磁盘读取查询需要的所有列,按照order by列在buffer对他们进行排序,然后扫描排序后的列表进行输出,它的效率更快一些,避免了第二次读取数据...(存在两个问题) 当查询的字段大小总和小于 max_length_for_sort_data,而且排序字段不是 TEXT|BLOB 类型时,会用改进后的算法——单路排序,否则用老算法——多路排序。

    1.6K50

    MySQL截取字符串函数方法

    今天建视图时,用到了MySQL中的字符串截取,很是方便。 感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用。...函数: 1、从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例: select left(content,200) as abstract from my_content_t...3、截取字符串 substring(str, pos) substring(str, pos, length) 说明: substring(被截取字段,从第几位开始截取) substring(被截取字段...,5,200) as abstract from my_content_t (注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度) 4、按关键字截取字符串 substring_index...",2) as abstract from my_content_t 结果:www.qingtai  (注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束) 结果:qingtai.org

    3K30

    Go 切片截取后,为什么大数组迟迟无法释放?

    用复制切断引用 如果截取结果要长期保存,就应该复制出一份新的小切片。...对于函数返回值、缓存值、跨 goroutine 传递的数据,它比裸截取更能表达意图。...什么时候必须复制 不是所有切片截取都需要复制。函数内部临时读取、临时校验、临时解析,一般可以直接截取。只要小切片不会逃出当前生命周期,大数组自然会在不可达后被回收。...修复后,再通过压测或复现脚本观察堆占用是否回落。若复制后内存明显下降,基本可以确认问题来自底层数组被意外保留。...写在最后 Go 切片截取后大数组迟迟无法释放,并不是 GC 失效,而是小切片让底层数组保持可达。切片共享底层数组带来了高效截取,也带来了隐藏的内存保留风险。

    18310

    只取小数点后两位函数公式_js四舍五入保留两位小数

    今天说一说只取小数点后两位函数公式_js四舍五入保留两位小数,希望能够帮助大家进步!!!...在很多场景的计算中,最终得到的数值例如123.45678,要截取2位小数得到123.45,而不是默认的四舍五入方法得到123.46,如何实现呢?...文章目录 一.小数点后取2位(四舍五入)的方法 方法一:round()函数 方法二:'%.2f' %f 方法 方法三:Decimal()函数 二.小数点后取2位(四舍五不入)的方法 方法一: 一.小数点后取...二.小数点后取2位(四舍五不入)的方法 通过计算的途径,很难将最终结果截取2位,我们直接想到的就是如果是字符串,直接截取就可以了。...例如 num = '1234567' #字符串num print(num[:3]) 结果: 123 如果是123.456取2位小数(截取2位小数),值需要把小数点右边的当做字符串截取即可 partition

    6.2K20

    Mysql从指定位置截取字符串

    在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left...一.从左开始截取字符串 用法:left(str, length),即:left(被截取字符串, 截取长度) SELECT LEFT('www.lingyejun.com',8); 结果为:www.ling...二.从右开始截取字符串 用法:right(str, length),即:right(被截取字符串, 截取长度) SELECT RIGHT('www.lingyejun.com',6); 结果为:un.com...三.截取特定长度的字符串 用法: substring(str, pos),即:substring(被截取字符串, 从第几位开始截取) substring(str, pos, length),即:substring...(被截取字符串,从第几位开始截取,截取长度) 1.从字符串的第9个字符开始读取直至结束 SELECT SUBSTRING('www.lingyejun.com', 9); 结果为:yejun.com 2

    4.2K10

    MYSQL字符串截取总结:LEFT、RIGHT、SUBSTRING、SUBSTRING

    在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left...一.从左开始截取字符串 用法:left(str, length),即:left(被截取字符串, 截取长度) 结果为:www.yuan 二.从右开始截取字符串 用法:right(str, length),...即:right(被截取字符串, 截取长度) 结果为:gu.com 三.截取特定长度的字符串 用法: substring(str, pos),即:substring(被截取字符串, 从第几位开始截取) substring...(str, pos, length),即:substring(被截取字符串,从第几位开始截取,截取长度) 1.从字符串的第9个字符开始读取直至结束 结果为:rengu.com 2.从字符串的第9个字符开始...,关键字,关键字出现的次数) 1.截取第二个“.”之前的所有字符 结果为:www.yuanrengu 2.截取倒数第二个“.”之后的所有字符 结果为:yuanrengu.com 3.如果关键字不存在,则返回整个字符串

    2K90

    MYSQL高级篇-----查询截取分析,锁机制,主从复制

    查询截取分析,锁机制,主从复制 3. 查询截取分析 SQL调优过程: 观察,至少跑1天,看看生产的慢SQL情况。 开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来。...在这里的影响是; 当Query的字段大小总和小于max_length_for_sort_data而且排序字段不是TEXT|BLOB类型时,会用改进后的算法——单路排序,否则用老算法——多路排序。...因为写锁后,其他线程不能进行任何操作,大量的写操作会使查询很难得到锁,从而造成永远阻塞。...间隙锁有一个比较致命的缺点,就是**当锁定一个范围的键值后,即使某些不存在的键值也会被无辜的锁定,而造成在锁定的时候无法插入锁定键值范围内的任何数据。...2.5.如何锁定一行 SELECT …FOR UPDATE在锁定某一行后,其他写操作会被阻塞,直到锁定的行被COMMIT。

    67810

    MySQL 中对字符串进行操作:字符串截取

    ) 年 结果:2018 2、right(name,2)截取右边的2个字符 SELECT RIGHT(201809,2) 月份 结果:09 3、SUBSTRING(name,5,3) 截取name这个字段...从第五个字符开始 只截取之后的3个字符 SELECT SUBSTRING('成都融资事业部',5,3) 结果:事业部 4、SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符...SUBSTRING('成都融资事业部',-4) 结果:资事业部 6、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符 SELECT...7、substring_index(‘www.baidu.com’, ‘.’, 2) 截取第二个 ‘.’...', -2) 结果:baidu.com 9、SUBSTR(name, 1, CHAR_LENGTH(name)-3) 截取name字段,取除name字段后三位的所有字符 SELECT SUBSTR('成都融资事业部

    2.9K20

    Mysql字符串截取总结:left()、right()、substring()、substring_index()

    在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left...一.从左开始截取字符串 用法:left(str, length),即:left(被截取字符串, 截取长度) SELECT LEFT('www.yuanrengu.com',8) 结果为:www.yuan...二.从右开始截取字符串 用法:right(str, length),即:right(被截取字符串, 截取长度) SELECT RIGHT('www.yuanrengu.com',6) 结果为:gu.com...三.截取特定长度的字符串 用法: substring(str, pos),即:substring(被截取字符串, 从第几位开始截取) substring(str, pos, length)...,即:substring(被截取字符串,从第几位开始截取,截取长度) 1.从字符串的第9个字符开始读取直至结束 SELECT SUBSTRING('www.yuanrengu.com', 9) 结果为

    2K00
    领券