gpt4 book ai didi

mysql - 使用 REPLACE 和 SUBSTRING_INDEX 在 MySQL 中拆分字符串

转载 作者:行者123 更新时间:2023-11-29 05:37:03 25 4
gpt4 key购买 nike

我需要拆分它:

a:6:{s:8:"address1";s:11:"2 Bourke St";s:8:"address2";s:13:"Woolloomooloo";s:4:"city";s:6:"Sydney";s:5:"state";s:3:"NSW";s:11:"postal_code";s:4:"2011";s:7:"country";s:9:"Australia";}

通过 ; 提取字符串末尾附近的值 2011。即使拉出 s:4:"2011" 也行。

我目前正在使用这段代码:

REPLACE(SUBSTRING_INDEX(地址, ';', 10), LENGTH(SUBSTRING_INDEX(地址, ';', 10 -1)) + 1), ';', '')

我从一个将它列为在 MySQL 中拆分字符串的解决方案的网站得到它...但它有语法错误。我尝试调试它,发现 ) 太多了,但我无法弄清楚如何更改它以使其正常工作...我不了解这应该如何进行拆分字符串。

this solution相比,它似乎过于复杂了...

有人可以提供帮助吗?解释它是如何工作的会很好,或者替代解决方案也可以。

谢谢!

最佳答案

阅读 SUBSTRING_INDEX 的文档和 REPLACE并且代码试图做什么会更清楚。

请注意,SUBSTRING_INDEX(address,';',10) 检索所有 address 直到第 10 次出现 ;,所以在你的案例从字符串的开头到 s:4:"2011"

REPLACE(string,from,to) 将所有出现的 from 替换为 to。看起来您尝试的代码试图替换第 9 个“;”之前的所有内容什么都没有(通过 REPLACE),并在第 10 个“;”之后切断所有内容。这将留下 's:4:"2011"'。

您可以提取 s:4:"2011" 的一种方法是使用 SUBSTRING_INDEX(address,';',-4) 返回第 4-最后 ; 之后。在您的情况下,这将是 s:4:"2011";s:7:"country";s:9:"Australia";

然后,在此结果字符串上使用 SUBSTRING_INDEX(...,';',1) 以获取第一次出现 ; 之前的所有内容,即 s:4:"2011".

总结:

SUBSTRING_INDEX(SUBSTRING_INDEX(address,';',-4),';',1)

我相信还有其他方法可以做到这一点。

关于mysql - 使用 REPLACE 和 SUBSTRING_INDEX 在 MySQL 中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9814430/

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