gpt4 book ai didi

mysql - 从 MySQL SELECT 中删除数字

转载 作者:行者123 更新时间:2023-11-29 14:07:36 28 4
gpt4 key购买 nike

我需要从 SELECT 查询中的名称字段中删除数字。这些数字可能位于字符串的末尾。示例如下:

Some Name
Namewithnospace
NamewithInt 100 <--- I want to remove this int from the string

我不能保证字符串的第一部分不包含空格,尽管我可以相当确定该数字将是字符串的最后部分。而且大多数数据不会有空格。

我可以看到必须有一个使用 REVERSE()SUBSTRING() 的解决方案,但无法弄清楚如何不破坏任何一个都没有的数据空格,或者有空格但没有整数的那些。

编辑:下面是 Ollie 向我指出的 MySQL C 函数的定义,我对正则表达式进行了更改(在函数的输出中包含空格和标点符号):

DELIMITER !

DROP FUNCTION IF EXISTS alphas!

CREATE FUNCTION alphas ( str VARCHAR(255) )
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i, len SMALLINT DEFAULT 1;
DECLARE ret VARCHAR(255) DEFAULT '';
DECLARE c VARCHAR(1);
SET len = CHAR_LENGTH( str );
REPEAT
BEGIN
SET c = MID( str, i, 1 );
IF c REGEXP '[[:alpha:]]' OR c REGEXP '[[:space:]]' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END;
UNTIL i > len END REPEAT;
RETURN ret;
END !
DELIMITER ;

最佳答案

自己创建一个名为alphas的存储函数。它会一一检查输入文本字符串的字符并删除所有数字。

DELIMITER !

DROP FUNCTION IF EXISTS alphas!

CREATE FUNCTION alphas ( str VARCHAR(255) )
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i, len SMALLINT DEFAULT 1;
DECLARE ret VARCHAR(255) DEFAULT '';
DECLARE c VARCHAR(1); /* NOT CHAR! NOT CHAR! NOT CHAR! */
SET len = CHAR_LENGTH( str );
REPEAT
BEGIN
SET c = MID( str, i, 1 );
IF NOT c REGEXP '[[:digit:]]' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END;
UNTIL i > len END REPEAT;
RETURN ret;
END !
DELIMITER ;

然后执行此操作。

 SELECT alphas(column) AS alphacolumn

这是一个有用的资源,我从中抄袭了这个函数。 http://www.artfulsoftware.com/infotree/qrytip.php?id=815

关于mysql - 从 MySQL SELECT 中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123075/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com