我不想替换字符串中的所有短划线,而是只替换作为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),
'-','')
上面是这样的。