postgresql で、テキスト フィールドの価格に対して書式設定された価格値を返そうとしていますが、テキスト フィールド値に他の余分なテキストが含まれていない場合のみです。
たとえば、次の 3 つのテキスト値では...
「580,000ドル以上のオファー」
「499000」
「現在 419,000 ドル - 以前は 459,000 ドル」
私は戻りたいと思います...
「580,000ドル以上のオファー」
「499,000ドル」
「現在 419,000 ドル - 以前は 459,000 ドル」
正規表現を使用して値を抽出し、10 進数にキャストしてから、出力をフォーマットして必要な値を取得しようとしています。例えば...
SELECT
CASE WHEN COALESCE(SUBSTRING(btrim('499000'::text) FROM '(^(\$?[0-9,]*)(\.[0-9]{2})?)$'),'') != ''
THEN to_char(substring('499000' FROM '^((\$?[0-9,]*)(\.[0-9]{2})?)$')::decimal, 'FM$999,999,999'::text)
ELSE '499000'
END as testresult
'499000' を 'Offers over $580,000' に置き換えると、エラーが発生します。これは、正規表現がまだこれを有効なものとして選択し、10 進数に変換しようとしているためです。ただし、文字列はオプションのドル記号 + 数字の組み合わせで始まる必要があると言っているため、この 2 番目の値が正規表現を通過する理由を理解するのに苦労しています。おもう。
誰かがこれについて正しい方向に私を向けることができますか? 他の多くの正規表現の投稿を見てきましたが、この質問に答えるのに役立つものはありません (解決策が含まれている場合は、別の投稿を参照してください)。
ありがとう!