mysql语句截取字符串_sql截取字符串的函数

mysql语句截取字符串_sql截取字符串的函数今天建视图时,用到了MySQL中的字符串截取,很是方便感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用。函数:1、从左开始截取字符串left(str,length)说明:left(被截取字段,截取长度)例:selectleft(content,200)asabstractfrommy_content_t2、从右开始截…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

今天建视图时,用到了MySQL中的字符串截取,很是方便

感觉上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.jb51.net”,”。”,2) as abstract from my_content_t

结果:blog.jb51

(注:如果关键字出现的次数是负数 如-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

40ebca60edb74db76c5f9a767a924d32.png

表2:jl

389a6a1590601799839e78e293c9699f.png

期望效果:通过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函数来查询呢?这样想是正常的,但是这两者之间谁的效率高,站长并没有测试,希望有心的你,可以帮忙哦!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186792.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • chmod 755 与chmod +x的区别

    chmod 755 与chmod +x的区别在写linuxshell脚本时,经常使用chmod755example.sh或chmod+xexample.sh来将文本文件转变为可执行文件。那么这个指令就行对文件做了什么事情?这两个指令之间又有什么区别呢?chmod是“changemode”的意思,用于改变Linux文件代表不同用户对此文件权限的一串flag。组成如下:chmod755的含义是将此文件的permissionflags改为111(7)101(5)101(5)也就是。因此我们也可以说chmod755的作用

  • Springboot+Spring-Security+JWT 实现用户登录和权限认证「建议收藏」

    如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC基于角色权限的验证,shiro框架专门用于处理权限方面的,另一个比较流行的后端框架是Spring-Security,该框架提供了一整套比较成熟,也很完整的机制用于处理各类场景下的可以基于权限,资源路径,以及授权方面的解决方案,部分模块支持定制化,而且在和oauth2.0进…

  • IDEA配置Maven(详细版)

    IDEA配置Maven(详细版)IDEA配置MavenIDEA创建Maven工程第一节IDEA集成Maven插件第二节使用骨架创建Maven的java工程第三节不使用骨架创建Maven的java工程第四节使用骨架创建Maven的javaweb工程第五节不使用骨架创建Maven的javaweb工程第六节IDEA使用Maven命令6.1方式一6.2方式二IDEA创建Maven工程第一节IDEA集成Maven插件打开IDEA,进入主界面后点击configure,然后点击settings在上面的快捷查找框

  • c语言调用bool函数,C语言中 bool的用法

    c语言调用bool函数,C语言中 bool的用法布尔型(bool)变量的值只有真(true)和假(false)。布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。bool可用于定义函数类型为布尔型,函数里可以有returnTRUE;returnFALSE之类的语句。布尔型运算结果常用于条件语句:if(逻辑表达式){如果是true执行这里;}else{…

  • USACO maze1 BFS

    USACO maze1 BFS

  • SAE J1939学习笔记(一)「建议收藏」

    SAE J1939学习笔记(一)「建议收藏」1.总线布局2.差分信号线J1939通讯传输的是一系列的“1”或“0”。 1代表在J1939(+)与J1939(-)之间是高电压差。0代表在J1939(+)与J1939(-)之间是低电压差250K波特率时,在J1939高、低导线间的电压从0到1每秒变化250K次是可能的。用一个高频示波器可以看到此电压变化。3.ISO标准对应–Layer…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号