怎么替换掉'"'字符

ohfox 2010-10-29 01:20:43
我的表的字段中有 " 字符,因为前台是通过html录入的
可是这会导致一些问题, 我怎么用replace替换掉这些字符呢?
直接replace(***,'"',' ' )没有效果啊
...全文
312 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shbz1986 2010-10-29
  • 打赏
  • 举报
回复
我说一个比较笨的方法,前几天我在网上找了一个在数据库里面使用正则表达式的方法函数,函数体如下:

CREATE function dbo.regexReplace
(
@source varchar(5000), --原字符串
@regexp varchar(1000), --正则表达式
@replace varchar(1000), --替换值
@globalReplace bit = 0, --是否是全局替换
@ignoreCase bit = 0 --是否忽略大小写
)
returnS varchar(1000) AS
begin
declare @hr integer
declare @objRegExp integer
declare @result varchar(5000)

exec @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OADestroy @objRegExp
IF @hr <> 0 begin
return null
end

return @result
end

使用这个函数就可以在数据库里面使用正则表达式了,前几天我也是需要把html的一些格式和换行去掉,我就做了一个正则表达式,具体实现步骤如下:

--创建临时表:
create table a
(
context nvarchar(1000)

);
--插入测试数据:
insert into a values('<html>
<head>
<script type="text/javascript">
function getValue()
{
var x=document.getElementById("myHeader")
alert(x.innerHTML)
}
</script>
</head>
<body>
<h1 id="myHeader" onclick="getValue()">这是标题</h1>
<p>点击标题,会提示出它的值。</p>

</body>
< ml>');
select dbo.regexReplace(context,'(?:(?:<(?:STYLE|style|SCRIPT|script)[^>]*>[\s\S]+?</(?:STYLE|style|SCRIPT|script)>)|(?:<[^>]+>)|(?:[\s{2,}\n]+))','',1,1) from a;
/*

------
这是标题点击标题,会提示出它的值。
*/

这样就把html里面的内容去掉了
「已注销」 2010-10-29
  • 打赏
  • 举报
回复
chr(34)对应"

replace(col,char(34),'')
ohfox 2010-10-29
  • 打赏
  • 举报
回复
是网页上的空格编码....
dawugui 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ohfox 的回复:]
恩,谢谢楼上的各位,是这样的,&quot; 字符在数据库的字段里面直接是看不到的
好比\r\n的这种网页字符,在表的字段里面是看不出来的,在replace的时候必须用
replace(***,char(13),'***')

replace(***,char(10),'***')

这样的方式才能把 \r\n 给替换掉

可是 &quot; 对应的又是什么编码呢?
[/Quote]
好象是网页上面的个什么东东?忘记了。tab吗?

帮顶。
ohfox 2010-10-29
  • 打赏
  • 举报
回复
恩,谢谢楼上的各位,是这样的," 字符在数据库的字段里面直接是看不到的
好比\r\n的这种网页字符,在表的字段里面是看不出来的,在replace的时候必须用
replace(***,char(13),'***')

replace(***,char(10),'***')

这样的方式才能把 \r\n 给替换掉

可是 " 对应的又是什么编码呢?
duanzhi1984 2010-10-29
  • 打赏
  • 举报
回复
是否是你的字符编码的 问题呢?

是否有全角半角的问题呢?

duanzhi1984 2010-10-29
  • 打赏
  • 举报
回复

你再试下
siegebaoniu 2010-10-29
  • 打赏
  • 举报
回复
应该可以的吧。再检查检查
yangxxxxxx66 2010-10-29
  • 打赏
  • 举报
回复
这个函数没问题的,是不是***上出问题了?
abuying 2010-10-29
  • 打赏
  • 举报
回复
replace(***,'"',' ') --你这是替换 空格 ' '

replace(***,'"','')
「已注销」 2010-10-29
  • 打赏
  • 举报
回复
我这边都是对的....
SELECT replace('"2222222','"','' )RES
SELECT replace('"2222222','"','' )RES
SELECT replace('"2222222',N'"','' )RES
SELECT replace(N'"2222222','"','' )RES
SELECT replace(N'"2222222',N'"','' )RES

RES
----------------------
2222222

(1 row(s) affected)
dawugui 2010-10-29
  • 打赏
  • 举报
回复
create table tb(col varchar(20))
insert into tb values('"')
insert into tb values('1"')
insert into tb values('2"')
insert into tb values('34"')

select replace(col,'"',' ' ) from tb

drop table tb
/*

------

1
2
34

(所影响的行数为 4 行)
*/


create table tb(col varchar(20))
insert into tb values('"')
insert into tb values('1"')
insert into tb values('2"')
insert into tb values('34"')

select replace(col,N'"',' ' ) from tb

drop table tb
/*

------

1
2
34

(所影响的行数为 4 行)
*/


dawugui 2010-10-29
  • 打赏
  • 举报
回复
replace(***,N'"',' ' )
abuying 2010-10-29
  • 打赏
  • 举报
回复
含有特殊字符! &
区分 大小写
billpu 2010-10-29
  • 打赏
  • 举报
回复
应该可以呀...怎么没效果

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧