gpt4 book ai didi

mysql - 如何替换包含特定文本的 mySQL 列?

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

我有“行为”表和“url”列。“url”列包含如下几行。

我想做的是改变列“url”的行,例如

/this-is/the-main-url?fbclid=IwAR1VIvXLBSIs4S_eRc4FGVYhIsiViWPEBBSmpkHMatjAcH0Rh-_u4VGoo

/this-is/the-main-url

还有这个

/here-is/another-url?utm_source=facebook&utm_medium=cpc&utm_campaign=fb.traffic

/here-is/another-url

行为表。

因此,如果字符串包含 ?fbclid?utm_source 保留所有内容。

这也可以通过使用多个查询而不是一个复杂的查询来完成。

注意:utm_source 或 fbclid,参数和 id 可以是多种多样的,所以我需要一个动态的解决方案。

谢谢

最佳答案

MySQL SUBSTRING_INDEX 函数很方便。

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substring-index

演示

SELECT SUBSTRING_INDEX(
SUBSTRING_INDEX(
t.foo
,'?fbclid'
,1
)
,'?utm_source'
,1
)
FROM ( SELECT '/this-is/the-main-url?fbclid=IwAR1VIvXLBSIs4S_eRc4FGVYhIsiViWPEBBSmpkHMatjAcH0Rh-_u4VGoo' AS foo
UNION ALL SELECT '/here-is/another-url?utm_source=facebook&utm_medium=cpc&utm_campaign=fb.traffic'
) t

一旦我们的表达式工作并经过测试,我们就可以在 UPDATE 语句中使用这些表达式。但是我们想先测试 SELECT 语句中的表达式。

 UPDATE mytable 
SET mycol = SUBSTRING_INDEX( mycol ,'?fbclid',1)

跟进

原始问题中的规范是从字符串中删除字符串 '?fbclid'?utm_source

问题现在更新为“参数和 ID 可以是多种多样的,所以我需要一个动态的解决方案。”

如果我们只想截断第一个问号字符之后(包括)的所有内容,那么我们可以这样做:

  SUBSTRING_INDEX( myurl ,'?',1)

如果我们想留下一些问号字符,只删除某些字符串,那么我们可以多次调用SUBSTRING_INDEX

至于让它更动态,我们可以为每个定界符调用 SUBSTRING_INDEX,并将定界符参数(第二个参数)传递给 SUBSTRING_INDEX 作为一个参数。

关于mysql - 如何替换包含特定文本的 mySQL 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856523/

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