2016-07-13 18 views
0

「150 W 96 Th St」と「4514 282 Nd St」のような値を含むデータベースの列があります。既に気づいたことがあるように、数値通りの名前と接尾辞の間にスペースがあります(96 TH)。regexp_replaceを使用して、キャプチャグループのみを置き換える方法と一致する文字列を完全に一致させる方法

このスペースを削除する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') 

を試してみました。

他に何を試してください。

答えて

2

保存するアイテムの周囲にキャプチャグループを置き、置換文字列で参照します。

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

あなたは、紳士と学者です。魅力のように動作します。 –

関連する問題