如何阻止字符串转义

HengStar 2011-10-31 04:39:44
我想将一个SQL脚本插入一个表列中,但是脚本中有很多的单引号'导致无法把脚本当作一个整字符串识别,我想知道Sql server 2008中有没有类似C#中@符号的东东可以实现忽略字符串中的转义让一整个字符串原样输出的方法?
...全文
418 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2011-10-31
  • 打赏
  • 举报
回复
把一个单引号变成两个单引号,就转义了.
中国风 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gongxinheng 的回复:]

我是在insert语句中用,不是用来select
例如
SQL code

Insert into tb values(
'
--SQL Script
SELETE * FROM [MYDB].[dbo].[TB] WHERE name = 'abc'
'
)
[/Quote]

Insert into tb 
SELECT * FROM [MYDB].[dbo].[TB] WHERE name = 'abc'

這樣用
dawugui 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 gongxinheng 的回复:]
我是在insert语句中用,不是用来select
例如

SQL code

Insert into tb values(
'
--SQL Script
SELETE * FROM [MYDB].[dbo].[TB] WHERE name = 'abc'
'
)
[/Quote]8楼的行不?把一个引号替换为两个引号.
HengStar 2011-10-31
  • 打赏
  • 举报
回复
我是在insert语句中用,不是用来select
例如

Insert into tb values(
'
--SQL Script
SELETE * FROM [MYDB].[dbo].[TB] WHERE name = 'abc'
'
)
中国风 2011-10-31
  • 打赏
  • 举报
回复
貼出來有點亂,直接在這里看語法和例子
http://technet.microsoft.com/zh-cn/library/ms179859%28SQL.90%29.aspx
中国风 2011-10-31
  • 打赏
  • 举报
回复
使用萬用字元作為常值
您可以使用萬用字元模式比對字元作為常值字元。若要使用萬用字元作為常值字元,請用括號將萬用字元括住。下表顯示若干使用 LIKE 關鍵字及 [ ] 萬用字元的範例。

符號 意義
LIKE '5[%]'
5%

LIKE '[_]n'
_n

LIKE '[a-cdf]'
a、b、c、d 或 f

LIKE '[-acdf]'
-、a、c、d 或 f

LIKE '[ [ ]'
[

LIKE ']'
]

LIKE 'abc[_]d%'
abc_d 和 abc_de

LIKE 'abc[def]'
abcd、abce 和 abcf


含 ESCAPE 子句的模式比對
您可以搜尋包括一或多個特殊萬用字元的字元字串。例如,customers 資料庫中的 discounts 資料表可能會儲存包括百分比符號 (%) 的折扣值。若要將百分比符號當作字元而不是萬用字元來搜尋,您必須提供 ESCAPE 關鍵字和逸出字元。例如,包含名稱為 comment 的資料行且資料行中有 30% 這個文字的範例資料庫。若要搜尋 comment 資料行的任何位置含有 30% 這個字串的任何資料列,請指定 WHERE 子句,例如 WHERE comment LIKE '%30!%%' ESCAPE '!'。如果未指定 ESCAPE 和逸出字元,Database Engine 會傳回任何含有 30 這個字串的資料列。

如果 LIKE 模式中逸出字元之後沒有任何字元,模式便無效,LIKE 會傳回 FALSE。如果逸出字元之後的字元不是萬用字元,就會捨棄萬用字元,且會將模式中在逸出之後的字元當作正規字元來處理。其中包括用一組方括號 ([ ]) 括住的百分比符號 (%)、底線 (_) 和左方括號 ([) 萬用字元。另外,在一組方括號字元 ([ ]) 內,您可以使用逸出字元,且可以逸出脫字符號 (^)、連字號 (-) 和右方括號 (])。
dawugui 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 gongxinheng 的回复:]
我想将一个SQL脚本插入一个表列中,但是脚本中有很多的单引号'导致无法把脚本当作一个整字符串识别,我想知道Sql server 2008中有没有类似C#中@符号的东东可以实现忽略字符串中的转义让一整个字符串原样输出的方法?
[/Quote]
把单引号变成双引号.然后再插入.
例如:
create table tb(name varchar(50))

insert into tb values('abcd''efg')

select * from tb
/*
name
--------------------------------------------------
abcd'efg

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


drop table tb


--小F-- 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wufeng4552 的回复:]
引用 3 楼 fredrickhu 的回复:
用中括号。

中括号单引号也要写两个吧
[/Quote]
恩啊。
水族杰纶 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]
用中括号。
[/Quote]
中括号单引号也要写两个吧
-晴天 2011-10-31
  • 打赏
  • 举报
回复
这个恐怕最好要与输入的目标相结合,如网页上单引号的字符实体是&039;
replace(@s,'''','&039;')

然后就可以不去管那些单引号了.
水族杰纶 2011-10-31
  • 打赏
  • 举报
回复
貌似没有
--小F-- 2011-10-31
  • 打赏
  • 举报
回复
用中括号。
中国风 2011-10-31
  • 打赏
  • 举报
回复
[]--用這個
geniuswjt 2011-10-31
  • 打赏
  • 举报
回复
好像有个escape,不过好像也要每个单引号地方都要写,因为字符串两边必须有单引号吧

34,837

社区成员

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

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