Php SQL:如果字段具有高度和经度值,则选择此选项

Php SQL:如果字段具有高度和经度值,则选择此选项,php,sql,postgresql,psql,Php,Sql,Postgresql,Psql,我有一个地址表,如下所示: Column | Type | Modifiers ------------------------+--------------------------+------------------------------------------------------------ id

我有一个地址表,如下所示:

         Column         |           Type           |                         Modifiers                          
------------------------+--------------------------+------------------------------------------------------------
 id                     | integer                  | not null default nextval('venue_address_id_seq'::regclass)
 street                 | character varying        | not null
 number                 | character varying        | 
 zip                    | character varying        | 
 state                  | character varying        | 
 country                | character varying        | 
 location               | point                    | 
 venue_id               | integer                  | not null
 created_at             | timestamp with time zone | 
 created_by             | json                     | 
 updated_at             | timestamp with time zone | 
 updated_by             | json                     | 
 city_id                | integer                  | 
 name                   | character varying        | 
 district_id            | bigint                   | 
 deleted                | boolean                  | not null default false
 location_email         | character varying        | 
 participant_list_email | character varying        | 
某些行中的Street字段包含需要更正的无效数据,这些数据为:海拔和经度值

如下

SELECT street from address where id=10;
结果:

 id |        street        
----+----------------------
  1 | Paseo de la Castellana, 75 (40°26'42.4"N 3°41'33.7"W)
  2 | Calle Anil, 21 (40.456744,-3.616466)
  3 | Correct address, 55
(2 rows)
我只想保留街道名称和编号,但删除高度和经度值,如第三条正确记录

我正在使用postgres DBMS。我的尝试是找到错误的:

select id, street from venue_address WHERE street like '*(';
但我甚至不知道如何纠正后,得到了错误的


Q:有什么办法可以做到这一点吗?

Hmmm,一个简单的观察就是正确的地址没有括号。如果在数据中是这样,则可以使用
regexp\u replace()


这只是删除括号之间的任何内容。如果不需要的数据的格式更加一致,您可以修改正则表达式。

Hmmm,一个简单的观察就是正确的地址没有括号。如果在数据中是这样,则可以使用
regexp\u replace()

这只是删除括号之间的任何内容。如果不需要的数据的格式更一致,则可以修改正则表达式。

尝试以下操作:

update address set street=regexp_replace(street, '[(].*[)]', '') where street ~ '[(].*[)]'
试试这个:

update address set street=regexp_replace(street, '[(].*[)]', '') where street ~ '[(].*[)]'
PgSQL本机支持。。。您可以尝试使用
~
操作符,而不是像
那样使用
。PgSQL本机支持。。。您可以尝试使用
~
运算符,而不是像
那样使用