实际上,您可以使用以下功能之一
value_or_colum_name ~ '<regex-expression>'
value_or_colum_name SIMILAR TO '<regex-expression>'
TEXTREGEXEQ(value_or_colum_name,'<regex-expression>')
所有这 3 种可能性是完全等价的。
REGEXP_LIKE
SqlPostGreSQL 上不存在该函数。但是REGEXP_MATCHES
并且REGEXP_REPLACE
存在。
这是一个命令~
,REGEXP_REPLACE
我用它来检查我的正则表达式是否在启动 SQL 之前正常工作UPDATE
。
SELECT communication
,REGEXP_REPLACE
(communication
,'(\d{3})(\d{4})(\d{5})'
,'***\1/\2/\3***'
) as ref
FROM mouvements
WHERE communication ~ '^\d{12}$'
这给出了以下结果
comm ref
------------------------------------
303000167868 ***303/0001/67868***
121231357408 ***121/2313/57408***
321000204456 ***321/0002/04456***
最后的 UPDATE 命令是
UPDATE mouvements
SET communication = NULL
,Ref_Structured = REGEXP_REPLACE(communication,'(\d{3})(\d{4})(\d{5})','***\1/\2/\3***')
WHERE communication ~ '^\d{12}$'
另一个拆分列的 SQLUPDATE
命令是 2
UPDATE mouvements
SET nom = REGEXP_REPLACE(nom,'^(.*)(REFERENCE DONNEUR D''ORDRE : )(.*)','\1')
,RefDonneur = REGEXP_REPLACE(nom,'^.*(REFERENCE DONNEUR D''ORDRE : )(.*)','\2')
where nom ~ 'REFERENCE DONNEUR D''ORDRE :'