2

データベースには、「150 W 96 Th St」および「4514 282 Nd St」に類似した値を含む列があります。お気付きかもしれませんが、通りの数字と接尾辞の間には '96 TH' のようにスペースがあります。

そのスペースを削除する postgresql クエリを作成しようとしています。以下を使用します。

SELECT regexp_matches('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ')

私は得る:

{" "}

キャプチャ グループのみが返されることを示します。

ただし、実行すると

SELECT regexp_replace('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ', '')

私は得る

150 WSt

一致する文字列全体が置き換えられます。

私も試してみました

SELECT regexp_replace('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ', '\1')

最初のキャプチャ グループを置き換えるだけだと思いました。

他に何を試す必要がありますか?

4

1 に答える 1

9

保持したいものをキャプチャ グループで囲み、置換文字列でそれらを参照します。

SELECT regexp_replace('150 W 96 Th St', '(\d+) (St|Nd|Rd|Th)', '\1\2')
于 2016-07-13T15:58:31.077 に答える