gpt4 book ai didi

mysql - 计算数字之前的字符数

转载 作者:行者123 更新时间:2023-11-30 00:31:54 25 4
gpt4 key购买 nike

在 MySQL 5.6 数据库中,我想删除字符串中第一个数字之前的空格后面的所有内容,然后将结果插入到新表中。例如,SELECT id, strcolumn FROM sometable 给出值:

8976    complicated 200 some other info
8977 something else 400 even more info
8978 intricate 300 lots of extra characters

我希望新表将上面的内容简化为:

8976    complicated
8977 something else
8978 intricate

如何更改以下语句以创建新的、已编辑的表?

CREATE TABLE newtablename AS SELECT id, strcolumn FROM sometable

在 Java 中,我会一次遍历字符串一个字符来查找数值,然后从第一个数值的索引中减去 1,并将字符串修剪到指定索引处结束,从而得到 100 % 成功率。 MySQL 有没有办法做到这一点?

最佳答案

使用 SUBSTRING_INDEX 这是我写过的最丑陋的 SQL:http://sqlfiddle.com/#!2/a79b4/1/0

CREATE TABLE sometable (id int primary key, strcolumn text);

INSERT INTO sometable VALUES (8976, 'complicated 200 some other info'),
(8977, 'something else 400 even more info'),
(8978, 'intricate 300 lots of extra characters ');

CREATE TABLE newtablename AS
SELECT id,
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(
strcolumn,
' 1', 1), ' 2', 1), ' 3', 1), ' 4', 1), ' 5', 1), ' 6', 1), ' 7', 1), ' 8', 1), ' 9', 1), ' 0', 1) as strcolumn
FROM sometable;

这是丑陋且低效的。 MySQL 可以使用正则表达式进行搜索,但无法返回基于正则表达式的子字符串。我强烈建议使用 UDF 或客户端脚本,这可能是您可以使用的 RE:/^([^0-9])\s[0-9]/或者至少,创建一个函数来封装它。

问题可能不是 100% 清楚,因为您应该指定如果数字前面没有空格或者它是第一个字符,您想要什么结果。

关于mysql - 计算数字之前的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441590/

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