如何使用 MySQL 字符串函数在单词中插入空格?

Posted

技术标签:

【中文标题】如何使用 MySQL 字符串函数在单词中插入空格?【英文标题】:How do I insert a space in a word using a MySQL string function? 【发布时间】:2012-04-16 04:10:33 【问题描述】:

如何使用 mysql 字符串在单词中插入空格 功能?

我有一个 GPS 坐标保存在我的 gps 列中

S2829.080,E2850.683

我希望输出是:

S28 29.080,E28 50.683

非常感谢任何建议。

谢谢

解决方案更新:

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

SELECT CONCAT_WS(' ', LEFT(SPLIT_STR("S2829.080,E2850.683",',',1),3),MID(SPLIT_STR("S2829.080,E2850.683",',',1),4,LENGTH(SPLIT_STR("S2829.080,E2850.683",',',1)))) AS
latitude;

SELECT CONCAT_WS(' ', LEFT(SPLIT_STR("S2829.080,E2850.683",',',1),3),MID(SPLIT_STR("S2829.080,E2850.683",',',2),4,LENGTH(SPLIT_STR("S2829.080,E2850.683",',',2)))) AS
longitude;

我已经“规范化”了我的数据库并通过添加 2 列更改了 JS 表单 经度和纬度。

谢谢大家

【问题讨论】:

模式是否总是一样的:3chars, space, number, comma, 3chars, space, number? 嗨迈克尔,是的,模式总是一样的。 JS 应用程序有一个正则表达式来检查这种模式,但它实施得有点晚。 /A-Z1[0-9]2\s[0-9]2\.[0-9]3/ 【参考方案1】:

试试下面:

使用concat(),left(),mid() mysql函数:

update table set columnname=concat(LEFT(columnname,3),' ',MID(columnname,4,LENGTH(columnname)))

假设您的空间总是在列值中的 3 个字符之后

顺便说一句,如果您将逗号分隔的值存储在单列下,它将不起作用。这是这种表模式的缺点。

你应该Normalize你的数据库

您应该创建父子表而不是逗号分隔值

【讨论】:

感谢您的帮助,我已经用解决方案更新了我的问题。【参考方案2】:

如果您需要拆分前 3 个字符,其余的在这里是一种方式

SELECT CONCAT_WS( " ", LEFT( columname 3 ) , SUBSTRING( columnname FROM 4 ) ) FROM tablename

【讨论】:

以上是关于如何使用 MySQL 字符串函数在单词中插入空格?的主要内容,如果未能解决你的问题,请参考以下文章

给定一个单词,通过在它们之间添加空格来形成一个有意义的单词

<br> 在下一个 foreach 项目中插入空格

如何使用 PHP 从 MySql 数据库中获取数据

如何在mysql函数中使用别名

iTextSharp 在 pdf 文件中的单词中插入空格

编写程序,输入字符串(包含空格),统计其中单词的个数,单词之间以一个或多个空格分隔。