感觉上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
表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函数来查询呢?这样想是正常的,但是这两者之间谁的效率高,站长并没有测试,希望有心的你,可以帮忙哦!
相关推荐
MySQL中的`SUBSTRING_INDEX()`函数是进行字符串分割的常用工具。它返回一个子串,该子串包含了从原始字符串的起始部分到指定分隔符出现的次数。函数的基本语法如下: ```sql SUBSTRING_INDEX(str, delim, count) ``...
在MySQL中,处理字符串是常见的任务,涉及到诸如截取、拆分等操作。本文将深入讲解MySQL中的两个关键函数:`SUBSTRING` 和 `SUBSTRING_INDEX`,并提供相关示例来帮助理解它们的用法。 ### 1. `SUBSTRING` 函数 `...
根据提供的文件信息,本文将详细解释Java中截取字符串的各种方法及其使用场景,并...以上是对Java中截取字符串方法以及部分MySQL字符串截取函数的详细介绍。通过这些方法,开发者可以灵活地处理各种字符串相关的任务。
总的来说,熟练掌握这些MySQL字符串截取函数对于提升数据库操作效率和编写高效SQL语句至关重要。了解它们的用法和特性,可以更好地应对各种字符串处理场景,简化编程工作,并提高数据处理的灵活性。
除了`substring`和`patindex`,SQL还提供了其他字符串处理函数,如MySQL中的`SUBSTRING`和`SUBSTR`,以及`substring_index`,它们有着类似的用途,但语法和使用方式可能有所不同。例如,在MySQL中,`SUBSTRING`函数...
MySQL中的`SUBSTRING_INDEX()`函数是一个非常实用的字符串处理函数,它主要用于从字符串中提取子串,基于指定的分隔符出现的次数。这个函数在处理分隔符分隔的数据时特别有用,例如处理IP地址、逗号分隔的列表等。 ...
总结来说,MySQL提供了多种截取字符串的工具,包括`LEFT()`、`RIGHT()`、`SUBSTRING()`、`SUBSTRING_INDEX()`以及结合`CHAR_LENGTH()`的用法,这些函数在处理字符串时提供了极大的灵活性。了解并熟练掌握这些函数,...
MySQL中的截取函数是数据库操作中非常实用的功能,它们允许我们根据需求提取字符串的一部分。这里我们将详细介绍四个常见的MySQL截取函数:`LEFT()`、`RIGHT()`、`SUBSTRING()` 和 `SUBSTRING_INDEX()`。 1. **`...
总结起来,MySQL中实现基于正则的模糊替换字符串,关键在于理解`REPLACE`、`SUBSTRING`、`LOCATE`和`CONCAT`等函数的用法,以及如何正确地构造正则表达式。同时,掌握正则表达式的规则和实践中的注意事项,能够帮助...
SUBSTRING(expression,start[,length])函数用于截取字符串。例如SUBSTRING('CDA数据分析',1,3)会返回'CDA'。TRIM(str)函数用于返回删除了字符串两端空白后的结果。 日期时间函数用于处理日期和时间数据。它们在...
将字符串截取后转换为数值型(如整数或浮点数)是数据库管理中的一个实用技能,它能帮助我们进行更精确的数据分析和计算。本文将详细解析如何在SQL查询中实现这一过程,并提供具体的操作步骤和示例。 ### 截取字符...
这个SQL语句使用了`SUBSTRING()`、`LOCATE()`和`CHAR_LENGTH()`等函数,直接在查询中完成了字符串截取。 MySQL提供了多种字符串处理函数,包括: 1. `CHAR_LENGTH(str)`:返回字符串`str`的长度,对于多字节字符,...
总的来说,SQL的字符串截取功能在数据处理中扮演着重要角色,但需要根据具体的数据类型和字符集来谨慎使用,特别是在处理非英文字符时。熟练掌握这些函数的用法,能够帮助我们在数据库操作中更加灵活和高效。
### 使用SQL语句截取字符串 在数据库管理与查询中,经常需要对存储的数据进行处理,其中一项常见的操作就是对字符串进行截取。这在数据分析、数据清洗等场景下尤为重要。SQL提供了内置函数来帮助我们完成这一任务,...