mysql截取字符串最后两位_Mysql字符串截取函数SUBSTRING的用法说明

感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用。

函数:

1、从左开始截取字符串

left(str, length)

说明:left(被截取字段,截取长度)

例:select left(content,200) as abstract from my_content_t

2、从右开始截取字符串

right(str, length)

说明:right(被截取字段,截取长度)

例:select right(content,200) as abstract from my_content_t

3、截取字符串

substring(str, pos)

substring(str, pos, length)

说明:substring(被截取字段,从第几位开始截取)

substring(被截取字段,从第几位开始截取,截取长度)

例:select substring(content,5) as abstract from my_content_t

select substring(content,5,200) as abstract from my_content_t

(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度)

4、按关键字截取字符串

substring_index(str,delim,count)

说明:substring_index(被截取字段,关键字,关键字出现的次数)

例:select substring_index("blog.zzvips.com","。",2) as abstract from my_content_t

结果:blog.zzvips

(注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束)

函数简介:

SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)

不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。 使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下格式的函数中可以对pos 使用一个负值。

详情请查阅手册。

实例:

表1:user

表2:jl

期望效果:通过user表jlid字段存储的id值,读取jl表中的相应记录,这里想要读取,jl表中id为1、2的记录,首先想到用in,但是很遗憾由于

jlid字段存储的id值有2个,尽管从形式上符合in(1,2)的格式,但是如果你使用select jl.* from jl where jl.id in(select jlid from user where user.id=1)来查询的话,是不行的,他总是返回id为1的记录。

那么怎么办呢?如果我们能够分别得到1,2中的1和2就行了。好在mysql也提供了字符串截取函数SUBSTRING。

sql句法如下:

SELECT jl. *

FROM jl

WHERE jl.id = (

SELECT SUBSTRING( (

SELECT user.jlid

FROM user

WHERE user.id =1

), 1, 1 ) )

OR jl.id = (

SELECT SUBSTRING( (

SELECT user.jlid

FROM user

WHERE user.id =1

), 3, 1 )

)

LIMIT 0 , 30

简单解释一下:

SELECT SUBSTRING( (SELECT user.jlid FROM user WHERE user.id =1), 1, 1 ) )

这里用了子查询,首先查询user表中,id为1的jlid字段的值,返回的是字符串,然后使用SUBSTRING进行截取,得到字符串1

SELECT SUBSTRING( (SELECT user.jlid FROM user WHERE user.id =1), 3, 1 ) )

这条语句得到2

1和2都得到了再通过主查询的where来查询,要注意我们需要查询id=1和id=2的记录,所以用到了OR,怎么样,是不是有点麻烦,

您的第一直觉是不是要用2条sql语句,中间再配合php的explode函数来查询呢?这样想是正常的,但是这两者之间谁的效率高,站长并没有测试,希望有心的你,可以帮忙哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql删除元组_Lecture #02: 中级SQL

本专栏是对CMU15445的笔记的翻译,原文地址:https://15445.courses.cs.cmu.edu/fall2020/notes/02-advancedsql.pdf1 关系语言在20世纪70年代,Edgar Codd发布了一篇关于关系模型的论文。最初,他只定义了数据库在关系模型上运行查询…

算法之快速排序(递归和非递归)

快速排序的两种实现方式.递归和非递归 1 package com.ebiz.sort;2 3 import java.text.SimpleDateFormat;4 import java.util.Arrays;5 import java.util.Date;6 import java.util.Stack;7 8 /**9 * author YHj10 * create 2019-08-18 17:4211 */12 public class Quick {13 …

iCloud官方文档

官方地址:iOS App Programming Guide -> iCloud Storage这个偏理论一些,提供了很多iCloud应用设计层面的东西,大家感兴趣,可以一看。如果需要iCloud上手教程,可以参考我的另外一个贴子:http://www.cocoa…

单片机 架构 程序 经验总结_单片机“死机”了怎么办?看看一个资深工程师的经验总结...

原标题:单片机“死机”了怎么办?看看一个资深工程师的经验总结单片机(Microcontroller,MCU) 又称为微控制器或嵌入式控制器,体积虽小,但使用方便,应用范围广泛,在如通讯设备、智能化管理、医疗设…

[html] 使用canvas制作一个印章

[html] 使用canvas制作一个印章 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

0x00000000指令引用的内存不能为written_变量和内存访问

计算机世界有一个常识——所有的数据和指令必须经由内存才能进入CPU的寄存器进而被CPU使用&#xff0c;那么我们程序操作的主战场就是内存&#xff0c;内存操作也就顺理成章成为了程序中最高频的操作。为了节目的效果&#xff0c;我们先来看一段8086平台下的汇编代码&#xff1…

Zabbix 3.0 配置企业微信报警(注册---测试)

一、申请企业微信 1、登录企业微信官网&#xff0c;点击企业注册 二、配置企业微信 1、邀请管理员使用企业微信&#xff0c;如果有多个人直接添加新成员 2、管理员收到邀请&#xff0c;下载手机版企业微信&#xff0c;使用微信号登陆即可 3、创建应用 4、填写应用信息&#xff…

centos8 挂载ntfs_CentOS 8 挂载NTFS系统磁盘方案

本文最后更新于2020年4月20日&#xff0c;可能会因为没有后期更新而失效。如果您发现本文已经失效或者需要修正&#xff0c;请留言给博主&#xff01;感谢前言Linux 的系统默认是不支持 NTFS 格式的磁盘的&#xff0c;但总有些场景需要插入 USB、移动硬盘等 NTFS 格式磁盘来做文…

AutoMapper 9.0的改造(续)

上一篇有一个读者&#xff0c;有疑问&#xff0c;如何自动化注册Dto 我开篇&#xff0c;做了一个自动化注册的 public sealed class AutoInjectAttribute : Attribute{public Type SourceType { get; }public Type TargetType { get; }public AutoInjectAttribute(Type sourceT…

.net byte转java byte_Java Web安全 || Java基础 Java Agent

点击上方“凌天实验室”&#xff0c;“星标或置顶公众号”漏洞、技术还是其他&#xff0c;我都想第一时间和你分享“【历史】已连载更新全部内容&#xff1a;【菜单栏】-【JAVA SEC】01Java AgentJDK1.5开始&#xff0c;Java新增了Instrumentation(Java Agent API)和JVMTI(JVM …

ipc$开启telnet

echo offtitle opentelnet cheng...MODE con: COLS44 LINES15:zjmclscolor 0afor /l %%i in (1,1,5) do echo.echo -简介- echo.echo 依靠ipc$来开启Telnet!echo 请按提示输入...echo.set/p ip 输入IP: if /i "%ip%"&…

maven 修改文件名_Maven 构建配置文件

Maven 构建配置文件构建配置文件是一系列的配置项的值&#xff0c;可以用来设置或者覆盖 Maven 构建默认值。使用构建配置文件&#xff0c;你可以为不同的环境&#xff0c;比如说生产环境(Production)和开发(Development)环境&#xff0c;定制构建方式。配置文件在 pom.xml 文件…

必须进行支持的游戏方可使用此功能_C#8.0 新增功能

(给DotNet加星标&#xff0c;提升.Net技能)转自&#xff1a;张传宁cnblogs.com/SavionZhang/p/11201818.htmlC#8.0提供了许多增强功能1、Readonly 成员可将 readonly 修饰符应用于结构的任何成员。它指示该成员不会修改状态。这比将 readonly 修饰符应用于 struct 声明更精细。…

FOR JENNIFER MORRISON

豪斯医生里面这女子真是感觉越来越好看了&#xff0c;唉~ 白天一直在写代码&#xff0c;感觉自己非常2B&#xff0c;选择了一个非常臃肿容易出错的方式来完成一个本来很容易的问题。 那就是用状态机嵌套&#xff0c;大的状态机来操作整个模块的动作是没有错误的&#xff0c;但是…

Zabbix 3.0 配置企业微信报警(配置zabbix-web)

一、添加报警媒体类型 Name&#xff1a;自定义 Type&#xff1a;选择script Scripts name&#xff1a;填写脚本名称 Script parameters&#xff1a;脚本参数--corpidXXX--corpsecretXXX--user{ALERT.SENDTO}--msg{ALERT.MESSAGE}--agentidXXX最后点Add即可添加完成&#xff1b;…

[html] 写个布局,当页面高度不够时,底部固定在下面,反之不固定

[html] 写个布局&#xff0c;当页面高度不够时&#xff0c;底部固定在下面&#xff0c;反之不固定 <div class"layout"> <header class"header"><!-- header 内容 …… --></header><div class"page"><slot /…

信号量与令牌桶_限流的4种方式令牌桶实战

限流的4种方式正文限流限流是对某一时间窗口内的请求数进行限制&#xff0c;保持系统的可用性和稳定性&#xff0c;防止因流量暴增而导致的系统运行缓慢或宕机。常用的限流算法有令牌桶和和漏桶&#xff0c;而Google开源项目Guava中的RateLimiter使用的就是令牌桶控制算法。在开…

采用python解决实际问题_Python编程语言解决几种常见的实际问题

Python编程语言解决几种常见的实际问题 (2012-10-25 17:24:12) 标签&#xff1a; it python python培训 北京 杂谈 Python编程语言解决一些实际问题 from os.path import walk, join, normpath from os import chdir, remove def scan(arg, dirname, names) for file in names:…

EevExpress中XtraGrid常用方法

1.girdView在第一列显示行号 调整第一列的宽度 gridView1.IndicatorWidth 40; View Code 1 private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)2 { 3 if (e.Info.IsRowIndi…