name
テーブル内のcontacts
列に次のような値がいくつかあります。
_test 3100509 DEMO NPS
_
name
から各値の数値のみを返したい。
私はこれを試しました:
select substring(name FROM '^[0-9]+|.*') from contacts
しかし、それはそれをしません。
戻り値から数値ではないすべての文字を取り除く方法について何か考えはありますか?
これを試して :
select substring(name FROM '[0-9]+') from contacts
select regexp_replace(name , '[^0-9]*', '', 'g') from contacts;
これでうまくいくはずです。名前に複数の数値シーケンスがある場合でも機能します。
例:
create table contacts(id int, name varchar(200));
insert into contacts(id, name) values(1, 'abc 123 cde 555 mmm 999');
select regexp_replace(name , '[^0-9]*', '', 'g') from contacts;
これを使用するよりも小数点付きの数値を抽出したい場合
select NULLIF(regexp_replace(name, '[^0-9.]*','','g'), '')::numeric from contacts