求助: 用SQL语言实现下面的功能

来源:百度知道 编辑:UC知道 时间:2024/06/14 10:57:55
会SQL的朋友帮我看看下面这个功能怎么实现:

最初:
ip name address
001 bb 太平村
002 cc 石门桥村
003 dd 龙门镇
004 ee 战斗村
005 ff 大合运村

怎样用语言实现
结果:
ip name address
001 bb 太平
002 cc 石门桥
004 ee 战斗
005 ff 大合运

即:把含有XX村的地址数据去掉'村'然后显示出来,并不是取前面的两个或者三个字.

好心人帮帮,给点提示也行,谢谢哈!

select id,name,replace(address,'村','') from 表名 where address like '%村%';

我认为 如果是修改表结构的话
应该是可以用 更新命令 就是 update...set..where..
update 表名 set adress=太平 where ip="001"

以此类推 下面的都可以这样更新

update 表名 set replace where(select id,name,replace(address,'村','') from 表名 where address like '%村%');

select ip,name,replace(address,'村','') from table

看了你的意思,其实难不在能不能找到函数查询,而是这个数据是中文的。中文,你要小心,不知道你用的DBMS是那种呢。如mysql里,编码utf-8,一个中文的长度为3,你根据你的数据库调下。
下面是mysql的查询语句:(replace()是不可以的,如遇到一个address为“村村的镇”,就会出现不理想情况)

select ip,name,if(address like '%村',substring(address,1,length(address)/3-1),address) from table

想法:如果最后一位有‘村’字的,就把最后一位去掉。

用字符串函数实现:
select id,name,replace(address,'村','') from table_name where address like '%村'
这样并不会修改表中的数据。

如果需要把原表中记录修改成查询后的结果,可以将查询后的结果先存到临时表中,然后将原表中的数据替换掉即可。