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怎么截取中文部分的主要内容,如果未能解决你的问题,请参考以下文章

JS 如何截取日期部分呢?

PHP怎么用substr函数截取字符串中的某部分

怎么用JS截取指定的字符后面的部分,包括这个字符本身!

wireshark 截取的数据,这是一段聊天记录,中文部分乱码,该怎么解决

SQL 查询的时候截取字段在逗号前的部分

sqlserver截取日期的年份和月份