求助: 用SQL语言实现下面的功能
来源:百度知道 编辑:UC知道 时间:2024/07/05 09:11:59
最初:
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 '%村'
这样并不会修改表中的数据。
如果需要把原表中记录修改成查询后的结果,可以将查询后的结果先存到临时表中,然后将原表中的数据替换掉即可。