這似乎工作:
test=> select REGEXP_REPLACE('COMPANY A LP', ' LP$', ', LP');
regexp_replace
----------------
COMPANY A, LP
(1 row)
這是更好的:
test=> select REGEXP_REPLACE('COMPANY A LP', ' (INC|LP|LLC)$', ', \1');
regexp_replace
----------------
COMPANY A, LP
(1 row)
test=> select REGEXP_REPLACE('COMPANY A INC', ' (INC|LP|LLC)$', ', \1');
regexp_replace
----------------
COMPANY A, INC
(1 row)
(適用於任何你所提到的後綴,在單個語句)。
或者,如果按照該意見,一些記錄已經有逗號:
test=> select REGEXP_REPLACE('COMPANY A, INC', '([^,]) (INC|LP|LLC)$', '\1, \2');
regexp_replace
----------------
COMPANY A, INC
(1 row)
test=> select REGEXP_REPLACE('COMPANY A INC', '([^,]) (INC|LP|LLC)$', '\1, \2');
regexp_replace
----------------
COMPANY A, INC
(1 row)
另一種方式來處理,如果你正在更新的表,使所有的記錄都統一格式,是留下那些沒有格式化不正確的人:
UPDATE xxx
SET company_name=REGEXP_REPLACE(company_name, ' (INC|LP|LLC)$', ', \1')
WHERE company_name ~ '[^,] (INC|LP|LLC)$';
謝謝,這真的很接近。我忘記提及已經有適當逗號的記錄,即「COMPANY A,INC」和「COMPANY A INC」都存在。 –
@DylanHettinger答案更新,以處理這種情況 – harmic
非常感謝您的更新。你能告訴我這個術語用來描述'\ 1'和'\ 2'技術嗎? –