sql怎么截取中文部分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql怎么截取中文部分相关的知识,希望对你有一定的参考价值。
代码如下:CREATE PROCEDURE sp_str
(
IN p_str VARCHAR(50), /*原始字符串*/
IN p_begin_str VARCHAR(50), /*要匹配的起始字符串*/
IN p_end_str VARCHAR(50)) /*要匹配的结束字符串*/
OUT p_result VARCHAR(50)) /*返回结果*/
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE m_len INT DEFAULT 0;
DECLARE m_index INT DEFAULT 0;
/*计算第一个匹配字符串的索引位置*/
select locate(p_begin_str,p_str)+char_length(p_begin_str) into m_index;
/*计算第一个匹配字符串的长度*/
select locate(p_end_str,p_str,m_index) into m_len;
select SUBSTRING(p_str,m_index,m_len-m_index) INTO p_result ;
END;
执行:
CALL sp_str('[]abcd[12345]aa[]ss','abcd[',']',@result);
返回值 @result 为12345
call sp_str('[]abcd[sdww]aa[]ss','abcd[',']',@result);
返回值 @result 为sdww
如果不用存储过程,可以直接写sql语句实现:
代码如下:
select SUBSTRING(
']abcd[12345]111[]',
locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['),
locate(']',']abcd[12345]111[]',CHAR_LENGTH('abcd['))-
(select locate('abcd[',']abcd[12345]111[]')+CHAR_LENGTH('abcd['))
) 参考技术A 用正则表达式将所有小写字母、大写字母、数字、符号都替换成NULL
注意:不能使用[[:alnum:]] ,[[:alnum:]] 表示所有字母跟数字,汉字也算在内。
SELECT(REGEXP_REPLACE(lie2, '[[:digit:]]*[[:lower:]]*[[:upper:]]*[[:punct:]]*')) FROM cs1;
SQL里怎么把日期截取为月份
参考技术A当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要您的数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间部分,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
MySQL Date 函数:
参考资料:shulanxt,按照楼主的要求,如果是在日期格式的数据里面直接取出月份的话,利用 month() 函数就能实现。希望我的回答对您有所帮助~
望采纳~
以上是关于sql怎么截取中文部分的主要内容,如果未能解决你的问题,请参考以下文章