使用RegEx提取MySQL中每个单词的第一个字符

贾斯迪普·卡尔萨(Jasdeep Khalsa)

在我的MySQL数据库中,我有一列UTF-8格式的字符串,例如,我想使用RegEx提取第一个字符。

假设一个RegEx仅提取以下字符:

ਹਮਜਰਣਚਕਨਖਲਨ

并给出以下字符串:

ਹੁਕਮਿ ਰਜਾਈ ਚਲਣਾ ਨਾਨਕ ਲਿਖਿਆ ਨਾਲਿ ॥੧॥

提取的唯一字符是:

ਹਰਚਨਲਨ

我知道要解决此问题将需要执行以下步骤:

  • 通过使用空格作为分隔符,将字符串分成单个单词(子字符串)
  • 如果每个单词都与有效字符的正则表达式中的内容匹配,则提取第一个字母(子字符串的子字符串)

我已经看过所有关于SO的类似问题/答案,但到目前为止,没有一个能够解决我的问题。

贾斯迪普·卡尔萨(Jasdeep Khalsa)

我终于在我的一个程序员朋友的帮助下实现了这一目标。我直接将以下代码粘贴到SQL数据库部分中PhpMyAdmin

delimiter $$
drop function if exists `initials`$$
CREATE FUNCTION `initials`(str text, expr text) RETURNS text CHARSET utf8
begin
    declare result text default '';
    declare buffer text default '';
    declare i int default 1;
    if(str is null) then
        return null;
    end if;
    set buffer = trim(str);
    while i <= length(buffer) do
        if substr(buffer, i, 1) regexp expr then
            set result = concat( result, substr( buffer, i, 1 ));
            set i = i + 1;
            while i <= length( buffer ) and substr(buffer, i, 1) regexp expr do
                set i = i + 1;
            end while;
            while i <= length( buffer ) and substr(buffer, i, 1) not regexp expr do
                set i = i + 1;
            end while;
        else
            set i = i + 1;
        end if;
    end while;
    return result;
end$$

drop function if exists `acronym`$$
CREATE FUNCTION `acronym`(str text) RETURNS text CHARSET utf8
begin
    declare result text default '';
    set result = initials( str, '[ੴਓੳਅੲਸਹਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵੜਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ਲ਼]' );
    return result;
end$$
delimiter ;

UPDATE scriptures SET search = acronym(scripture)

只是为了解释最后一行:

  • scriptures 是我要更新的表
  • search 是我在表格内部创建的用于存储结果的新空列
  • scripturescriptures表中的现有列,其中包含我要从中提取的所有字符串
  • acronym 是先前声明的函数,该函数希望将每个单词的第一个字母与RegEx中的字符进行匹配 [ੴਓੳਅੲਸਹਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵੜਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ਲ਼]

因此,代码的最后这一行将遍历该列的每一行scripture,对其应用功能acronym并将结果存储在新search列中。

完美的!正是我在找什么:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取“ HTML” Javascript中每个单词的第一个字符?

从句子字符串中提取每个单词的第一个字符

替换每个单词的第一个字符而不影响内部单词

如何从2个单词中提取第一个字符

从numpy数组中的每个字符串中提取第一个字母

JavaScript:提取数组中每个字符串的第一个字母?

如何大写字符串中每个单词的第一个字符?

如何大写字符串中每个单词的第一个字符

获取字符串中每个单词的第一个字符

如何获取字符串中每个单词的第一个字符?

C++ - 将给定字符串中每个单词的第一个字符大写

将句子中每个单词的第一个字符转换为大写

如何从列表中的每个项目中提取第一个字符并进行操作

如何重复字符串中单词的第一个字符?

连接字符串中单词的第一个字符

提取R中每个单词的第一个字母

如何从飞镖中的单词中获取第一个字符?

获取字符串中每个单词的第一个字母并使用 Regex 连接成新单词

想要在Django模板中显示单词的第一个字符

如何让 Python 使用 csv 读取一行中的第一个单词而不是第一个字符?

如果每个字符串中的第一个字符相同,则从数组中的每个字符串中删除第一个字符

提取句子中的第一个字符串

使用Case WHEN提取第一个字符

如何从数组的每个元素中删除第一个字符 - Javascript

如何添加每列中的每个第一个字符?

获取Java数组中每个字符串的第一个字符

获取列表中每个字符串的第一个字符

从字符串中的第一个单词中删除最后一个字符

在MySQL中替换字符串中的第一个字符