还是关于‘的问题

smfflynj 2003-07-11 02:42:48
如下语句:
我想在表a中插入字段join's name,i'm a class,语句如下:
insert into a values('join''s name','i''m a class');
现在问题是当客户输入字段名的时候我不知道它有没有’的字符
客户传过来的语句可能是(直接执行会出错):
insert into a values('join's name','i'm a class')
我想写一个sql函数:
把第二个引号变成'',形成如下
insert into a values('join''s name','i''m a class')
请问有没有实用的函数。
谢谢
...全文
19 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenery 2003-07-11
  • 打赏
  • 举报
回复
用参数模式吧,使用存储过程(无论你在参数中有什么特殊字符也不怕)
create proc(@v1 varchar(32))
as
inster table1 (col1) values(@v1)
jobine 2003-07-11
  • 打赏
  • 举报
回复
可以用字符串替换,不过最好还是在客户端程序中实现,否则服务器速度下降的更快。

SET QUOTED_IDENTIFIER OFF
declare @aa varchar(50)
set @aa="join's name,i'm a class"
select replace(@aa,"'","''")
jobine 2003-07-11
  • 打赏
  • 举报
回复
可以用字符串替换啊,不过最好还是在客户端程序中实现,否则服务器速度下降的更快。

SET QUOTED_IDENTIFIER OFF
declare @aa varchar(50)
set @aa="join's name,i'm a class"
select replace(@aa,"'","''")

smfflynj 2003-07-11
  • 打赏
  • 举报
回复
TO Leftie:
你那个语句是在ASP里面写的吧,好像在SQL中不能执行呀
smfflynj 2003-07-11
  • 打赏
  • 举报
回复
to jobine :
我试过了,你那个是可以的,但是我程序中怎么自动的把''读出来(不读错,只能读包含字段的)不也是个问题了吗?我那个insert into a values('join''s name','i''m a class')
也是能够执行的,但是问题是我怎么样把中间的单引号读出来并转换成两个单引号呢,其实呢的答案并没有完全解决问题!和我的是一样的
饮水需思源 2003-07-11
  • 打赏
  • 举报
回复
sqlstr="insert into a values("& replace('join''s name','i''m a class',"'","''" &")"
smfflynj 2003-07-11
  • 打赏
  • 举报
回复
如果在客户端有100个输入框,我对每个输入框都要进行严格的判断并替换的话,速度会明显
下降的(如果字符串本来就非常长),所以我想要想个办法在服务端写个函数,在执行SQL语句之前,首先将这条SQL语句转换一下,我觉得这个应该是可以的呀
sdhdy 2003-07-11
  • 打赏
  • 举报
回复
在程序里判断,不要在后台数据库判断
如果字段里面有'就把他替换成'',这样应该OK了。
jobine 2003-07-11
  • 打赏
  • 举报
回复
try:

SET QUOTED_IDENTIFIER OFF
insert into a values("join's name,i'm a class")
CrazyFor 2003-07-11
  • 打赏
  • 举报
回复
你在执行前就把它替换成''
在SQL里没有办法替换,因为'join's name'对SQL来说是不合法的.
所以你到SQL这里就应该是:'join''s name',而不是让SQL把'join's name'转换成:'join''s name'
CrazyFor 2003-07-11
  • 打赏
  • 举报
回复
你在执行前就把它替换成''
在SQL里没有办法替换,因为'join's name'对SQL来说是不合法的.
所以你到SQL这里就应该是:'join''s name',而不是让SQL把'join's name'转换成:'join''s name'
BlueskyWide 2003-07-11
  • 打赏
  • 举报
回复
insert into a values('join'||chr(39)||'s name,i'||chr(39)||'m a class');
jeck_zhou 2003-07-11
  • 打赏
  • 举报
回复
再程序中写一个方法,对用户输入的字符串进行处理,不只是',还有很多数据库不能直接插入的字符呢。

34,576

社区成员

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

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