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本机支持。。。您可以尝试使用~
运算符,而不是像那样使用。