仅为GUID剥去字符串中的所有短划线



我不想替换字符串中的所有短划线,而是只替换作为GUID:UUID一部分的短划线。

更换前:

Mary Anne Smith是伊利诺伊大学的物理学教授。她的论文主要研究希格斯玻色子粒子。她的教授ID是01140384-5189-11ed-be7-fa163e98fdf8。你可以在联系她mary-annes@ui.edu.

替换后:

Mary Anne Smith是伊利诺伊大学的物理学教授。她的论文主要研究希格斯玻色子粒子。她的教授ID是01140384518911edbe7fa163e98fdf8。你可以在联系她mary-annes@ui.edu.

如果您使用的是MySQL 8.x,您可以使用REGEXP_SUBSTR()从字符串中获取UUID,删除短划线,然后用它替换。

SELECT REPLACE(
column,
REGEXP_SUBSTR(column, '[0-9a-f]+-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]+'),
REPLACE(REGEXP_SUBSTR(column, '[0-9a-f]+-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]+'), '-', '')) AS column_modified
FROM yourTable

请注意,这只会替换列中的第一个UUID。如果需要进行更多的替换,可以编写一个存储函数,在循环中重复替换。

使用Regexp_Replace尝试此操作

Select Regexp_Replace
('string', 
'[0-9]{8}-[0-9]{4}-[a-z0-9]{4}-[a- 
z0-9]{12}', '-','') from table;

如果我们根据数据的语义,我们也可以将其划分为";id是";

例如

Select 
Replace(Substr(string 
Instr(String, 
'Id is' 
)+1,Instr(String, 
'Id is' 
)+1+len(hexIdformat), 
'-','')

上面是这样的。

最新更新