有一表字段(good_info)值是这样的:<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>想用SQL语句查询出前面2个包含在 p 标签里面的值,并且去掉<p></p>这样的标签,
最后字段查询的结果这样:内容一内容二一
----
使用的是mysql数据库,在p标签中的值有长有短,判断“p>” 这样的前四个。
不知有没说清楚。
原先字段中的值是:<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>
希望得到后的值是:内容一内容二一
多谢大家指点。。
最后字段查询的结果这样:内容一内容二一
----
使用的是mysql数据库,在p标签中的值有长有短,判断“p>” 这样的前四个。
不知有没说清楚。
原先字段中的值是:<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>
希望得到后的值是:内容一内容二一
多谢大家指点。。
set @str=':<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>'
select replace(replace(@str,'<p>','','</p>','')
抱歉,没说清楚。
set @s='<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>'
select cast(@s as xml).value('.','varchar(20)')
/*--------------------
内容一内容二一内容三(1 行受影响)
*/
if object_id('[tb]') is not null drop table [tb]
create table [tb]([id] int,[info] varchar(66))
insert [tb]
select 1,'<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>' union all
select 2,'<p>test1</p><p>test内容12</p><p>WOW163</p><p>testtet</p>' union all
select 3,'<p>20100831</p><p>20100831</p><p>20100831</p><p>20100831</p>' union all
select 4,'<p>WLK</p><p>WLK80</p><p>WLKlr</p><p>WLK</p>' union all
select 5,'<p>DKDK</p><p>mianfeng</p><p>内容三二一</p><p>内容四一</p>'--2005
select id,cast(left([info],charindex('</p>',[info],charindex('</p>',[info],1)+1)+3) as xml).value('.','varchar(100)') from [tb]
--2000
select id,replace(replace(left([info],charindex('</p>',[info],charindex('</p>',[info],1)+1)+3) ,'<p>',''),'</p>','') from [tb]
select extractvalue(@x,'//p[position()<=2]');
#1305 - FUNCTION tab.extractvalue does not exist截取到第四个" p> " 符号然后去掉,不知这样想法可以吗。
现在想法是这样,查找并截取到第四个 “p>” 再把值里面的不需要的符号用replace去除。
如上语句,我从字段goods_desc中的值是原先字段中的值是:<p>内容一</p><p>内容二一</p><p>内容三二一</p><p>内容四一</p>
现在得到后的值是:内容一内容二一现在我想把这个值移到 goods_name字段中。
mysql中的update 语句:
update good set goods_name =(select substr(goods_desc,1,instr(goods_desc,'/p>')+4+instr(substr(goods_desc,instr(goods_desc,'/p>')+4),'/p>')+1) from good) where goods_id=goods_id;报错:you can't specify target table 'good' from update in from clause.
大意是说,不能在表 good 更新子句。以前没有这样进行修改过,希望大家指点一下,多谢。
update good set goods_name = substr(goods_desc,1,instr(goods_desc,'/p>')+4+instr(substr(goods_desc,instr(goods_desc,'/p>')+4),'/p>')+1) 这样得到的值,再
update good set goods_name = replace(goods_name,'</p>','');
update good set goods_name = replace(goods_name,'<p>','');
这样去除 p 标签。
语句还是太多不熟悉,这样写也是比较没效率的,我想应该还会有更好的方法解决他。。
总之多谢大家的提示与帮忙了,谢谢。