MYSQL不规则字符串提取时间

1、数据格式如下

处理结果:

代码如下:

select str_to_date(left(date,10),'%Y-%m-%d') as d,name as ha,
date_format(concat(str_to_date(left(date,10),'%Y-%m-%d'),
'-',sb1_time),'%H:%i') as kk_sb1,
date_format(concat(str_to_date(left(date,10),
'%Y-%m-%d'),'-',sb4_time),'%H:%i') as kk_sb4,
sb2_time as kk_sb2,sb3_time as kk_sb3,
case when late like '%小时_%' 
then (((left(late,2)+0)*60)+0)+(
case when left(right(late,4),2) like '时%' 
then left(right(right(late,4),3),1)
else left(right(late,4),2) end) else 
(case when late like '%分钟' then left(late,2)+0 else '' end 
)end as x,
case when ealiry like '%小时_%' 
then (((left(ealiry,2)+0)*60)+0)+(
case when left(right(ealiry,4),2) like '时%' 
then left(right(right(ealiry,4),3),1)
else left(right(ealiry,4),2) end) else 
(case when ealiry like '%分钟' then left(ealiry,2)+0 else '' end 
)end as y,
  late,ealiry
from ods_kq_yc_kk b

以上就可以将迟到时间处理正常的分钟数了 

<think>好的,我现在需要回答用户关于MySQL字符串函数列表及用法的问题。用户之前提到了几个引用,涉及LENGTH、SUBSTRING、TRIM、SUBSTRING_INDEX等函数,我需要尽可能多地参考这些信息,并补充其他常见的字符串函数。 首先,我要整理用户提供的引用内容。引用[1]提到LENGTH函数,引用[2]和[4]涉及SUBSTRING和SUBSTRING_INDEX,引用[3]详细说明了TRIM的不同用法。这些是用户已经提供的例子,我需要确保这些函数在回答中被涵盖,并详细说明它们的用法。 接下来,我应该补充其他常用的字符串函数。例如,CONCAT用于连接字符串,UPPER和LOWER换大小写,REPLACE替换字符串中的子串,LEFT和RIGHT提取左右边的字符,LOCATE查找子串位置,REVERSE反字符串,LPAD/RPAD填充字符串等。这些都是常见的字符串处理函数,用户可能会需要了解。 然后,我需要检查每个函数的语法是否正确,并给出示例。例如,CONCAT(str1, str2, ...),示例中展示如何连接多个字符串。对于REPLACE,要说明替换的规则,比如区分大小写。同时,注意每个函数的参数和返回值,例如SUBSTRING的起始位置可以是负数,这需要特别说明。 还要注意用户提到的格式要求:行内数学表达式用$...$,但这里可能用不上,所以重点在正确使用代码块和函数名称的高亮。确保每个函数单独列出,结构清晰,分点说明,可能用编号或者加粗标题。 另外,用户要求生成相关问题,我需要根据回答内容提出几个相关问题,比如如何组合使用函数,处理中文字符,性能优化等。这些问题需要与MySQL字符串函数相关,并且能引导用户进一步探索。 最后,确保回答的结构符合要求:先介绍常用函数及用法,然后给出示例代码块,再列出相关问题。同时,正确添加引用标识,比如引用[^1]、[^2]等,根据用户提供的引用来源,放在对应的函数说明末尾。 现在需要验证是否有遗漏的重要函数,比如CHAR_LENGTH和LENGTH的区别,处理NULL值的函数如COALESCE(用户引用[4]提到),以及字符串生成函数如REPEAT或SPACE。这些补充能让回答更全面。 总结步骤: 1. 列出用户提到的函数并详细说明。 2. 补充其他常见字符串函数。 3. 每个函数给出语法和示例。 4. 结构清晰,分点列出,使用代码块。 5. 生成相关问题。 6. 正确添加引用标注。</think>### MySQL 字符串函数列表及用法 #### 一、常用字符串函数及语法 1. **LENGTH** 返回字符串的字节长度(受字符集影响) 语法:`LENGTH(str)` 示例:`SELECT LENGTH('MySQL') AS len;` → 5 [^1] 2. **CHAR_LENGTH** 返回字符数量(与编码无关) 语法:`CHAR_LENGTH(str)` 示例:`SELECT CHAR_LENGTH('中国') AS char_len;` → 2 3. **CONCAT** 连接多个字符串(含NULL时返回NULL) 语法:`CONCAT(str1, str2, ...)` 示例:`SELECT CONCAT('Hello', ' ', 'World');` → 'Hello World' 4. **SUBSTRING** 截取子字符串(支持负索引) 语法:`SUBSTRING(str, start, length)` 示例:`SELECT SUBSTRING('Database', 3, 4) AS sub;` → 'tabl' [^2] 5. **TRIM** 删除首尾指定字符(默认空格) 语法: ```sql TRIM([LEADING|TRAILING|BOTH] [remstr] FROM str) ``` 示例: ```sql SELECT TRIM(' MySQL ') AS trimmed; -- 'MySQL' SELECT TRIM(TRAILING '\n' FROM column_name) FROM table; [^3] ``` 6. **REPLACE** 替换字符串中的子串(区分大小写) 语法:`REPLACE(str, from_str, to_str)` 示例:`SELECT REPLACE('foo bar', 'foo', 'new');` → 'new bar' 7. **UPPER/LOWER** 换大小写 语法:`UPPER(str)`, `LOWER(str)` 示例:`SELECT UPPER('abc');` → 'ABC' 8. **LEFT/RIGHT** 截取左/右侧指定长度字符 语法:`LEFT(str, len)`, `RIGHT(str, len)` 示例:`SELECT LEFT('MySQL', 2);` → 'My' 9. **LOCATE** 查找子串位置(返回首次出现的位置,从1开始) 语法:`LOCATE(substr, str, [start])` 示例:`SELECT LOCATE('ql', 'MySQL');` → 3 10. **SUBSTRING_INDEX** 按分隔符截取子串(支持负计数) 语法:`SUBSTRING_INDEX(str, delim, count)` 示例: ```sql SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); → 'www.mysql' [^4] SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); → 'mysql.com' ``` 11. **LPAD/RPAD** 左侧/右侧填充字符至指定长度 语法:`LPAD(str, len, pad_str)` 示例:`SELECT LPAD('7', 3, '0');` → '007' 12. **REVERSE** 反字符串 语法:`REVERSE(str)` 示例:`SELECT REVERSE('abc');` → 'cba' 13. **COALESCE** 返回第一个非NULL值(可用于处理空值) 语法:`COALESCE(val1, val2, ...)` 示例:`SELECT COALESCE(NULL, 'default');` → 'default' [^4] #### 二、典型应用示例 ```sql -- 组合使用函数:提取邮箱域名并大写 SELECT UPPER(SUBSTRING_INDEX(email, '@', -1)) AS domain FROM users; -- 处理含换行符的数据 SELECT TRIM(TRAILING '\r\n' FROM log_content) FROM system_logs; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值