mysql字符串函数 splite_mysql使用substring_index达到splite功能

函数:

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 则是从后倒数,到字符串结束)

列子:

SELECT DISTINCT

api.`gid`,

api.`api_product_no`,

api.api_name

FROM

area_product_info api

WHERE api.`api_is_deleted` = 0

AND api.api_is_public = 1

AND api.api_status = 1

AND api.api_is_deleted = 0

AND api.api_mid IN

(SELECT DISTINCT

SUBSTRING_INDEX(

SUBSTRING_INDEX(

mdl.wsp_gid,

'-',

b.help_topic_id + 1

),

',',

- 1

) wsp_gids

FROM

(SELECT

awsp.wsp_has_model_info_gid wsp_gid

FROM

area_works_single_pano awsp

LEFT JOIN area_member_works_info amwi

ON amwi.`gid` = awsp.`wsp_member_works_info_gid`

WHERE amwi.`mwi_is_delete` = 0

AND amwi.mwi_works_no = #{worksNo}) mdl

JOIN mysql.help_topic b

ON b.help_topic_id < (

LENGTH(mdl.wsp_gid) - LENGTH(REPLACE(mdl.wsp_gid, '-', ''))

))

函数简介:

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 使用一个负值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 `std::string` 的一些成员函数实现字符串split 和 join 操作。 首先,实现字符串split 可以使用 `std::stringstream` 和 `std::getline` 来实现,示例代码如下: ```c++ #include <sstream> #include <vector> #include <string> std::vector<std::string> split(const std::string& s, char delimiter) { std::vector<std::string> tokens; std::stringstream ss(s); std::string token; while (std::getline(ss, token, delimiter)) { tokens.push_back(token); } return tokens; } ``` 上述代码中,使用 `std::stringstream` 将字符串转化为 `std::string` 流,然后使用 `std::getline` 函数根据指定的分隔符 `delimiter` 进行分割,将分割后的字符串存储到 `std::vector<std::string>` 中。 接下来,实现字符串的 join 可以使用 `std::stringstream` 和 `std::copy` 来实现,示例代码如下: ```c++ #include <sstream> #include <algorithm> #include <iterator> #include <vector> #include <string> std::string join(const std::vector<std::string>& strs, const std::string& delimiter) { std::stringstream ss; std::copy(strs.begin(), strs.end(), std::ostream_iterator<std::string>(ss, delimiter.c_str())); std::string joined_str = ss.str(); if (joined_str.size() > delimiter.size()) { joined_str.erase(joined_str.size() - delimiter.size()); } return joined_str; } ``` 上述代码中,使用 `std::stringstream` 将 `std::vector<std::string>` 中的字符串转化为 `std::string` 流,并使用 `std::copy` 函数字符串按照指定的分隔符 `delimiter` 进行拼接,最后返回拼接后的字符串。需要注意的是,由于最后一个字符串也会跟随一个分隔符,因此需要在返回的字符串中将最后一个分隔符去掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值