For complex SQL UPDATE statements, db.execute should be used.
g.copy vect=lakes,mylakes
v.db.select mylakes
v.db.select mylakes where="FTYPE IS NULL"
# display the lakes, show undefined FTYPE lakes in red
g.region vector=mylakes
d.mon wx0
d.vect mylakes where="FTYPE NOT NULL" type=area col=blue
d.vect mylakes where="FTYPE IS NULL" type=area col=red
# replace NULL with FTYPE WETLAND
v.db.update mylakes col=FTYPE value=WETLAND \
where="FTYPE IS NULL"
v.db.select mylakes
g.copy vect=fields,myfields v.db.addcolumn myfields col="polynum integer" v.db.update myfields col=polynum qcol="cat*2" v.db.select myfields
g.copy vect=geodetic_pts,mygeodetic_pts
v.db.update mygeodetic_pts col=zval qcol="CAST(z_value AS double precision)" \
where="z_value <> 'N/A'"
North Carolina data set example: adding new column, copying values from another table column with on the fly calculation:
g.copy vect=precip_30ynormals,myprecip_30ynormals v.db.addcolumn myprecip_30ynormals column="logjuly double precision" v.db.update myprecip_30ynormals column="logjuly" query_column="log(jul)" \ sqliteextra=$HOME/sqlite_extensions/libsqlitefunctions.so v.db.select myprecip_30ynormals columns=jul,logjuly jul|logjuly 132.842|4.88916045210132 127|4.84418708645859 124.206|4.82194147751127 104.648|4.65060233738593 98.298|4.58800368106618 ...
Last changed: $Date: 2017-03-12 11:58:07 +0100 (Sun, 12 Mar 2017) $