如何在 sql 命令中使用单引号?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/13391730/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I use single quote inside sql command?
提问by Anonymous
Possible Duplicate:
How do I escape a single quote in sqlserver?
可能的重复:
如何在 sqlserver 中转义单引号?
I got a script below that drop everything on the database from this link. It does error when I execute on this line.
我在下面得到了一个脚本,该脚本从此链接删除了数据库中的所有内容。当我在这条线上执行时它会出错。
SET @statement = '
IF(@type = 'F') or (@type = 'C') or (@type = 'D') or (@type='F') or (@type='K')
The reason is because the single quote. I want to know how can I fix this error?
原因是因为单引号。我想知道如何解决此错误?
/*** drop (pretty much) everything before rebuilding the database ***/
DECLARE
OBJECTS CURSOR FOR SELECT
so.name,
so.type,
so.type_desc,
p.name AS parentName
FROM
sys.objects AS so
LEFT JOIN sys.objects AS p ON so.parent_object_id = p.object_id
WHERE
so.schema_id = 1
ORDER BY
CASE
WHEN so.type = 'F' THEN
0
WHEN so.type = 'TR' THEN
1
WHEN so.type = 'U' THEN
2
WHEN so.type = 'F' THEN
3
ELSE
4
END OPEN OBJECTS DECLARE
@name AS nvarchar (MAX) DECLARE
@type AS nvarchar (2) DECLARE
@type_desc AS nvarchar DECLARE
@parentName AS nvarchar (MAX) DECLARE
@statement AS nvarchar (MAX) FETCH NEXT
FROM
OBJECTS INTO @name,
@type,
@type_desc,
@parentName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @statement = ' IF(@type = ' F ')
BEGIN
PRINT ' DROPING FK : ' + @name + ' OF type ' + @type + ' (' + @type_desc + ') '
SET @statement = ' ALTER TABLE ' + @parentName + ' DROP CONSTRAINT ' + @name
EXECUTE(@statement)
END
ELSE IF (@type = ' TR ')
BEGIN
PRINT ' DROPING TRIGGER : ' + @name + ' OF type ' + @type + ' (' + @type_desc + ') '
SET @statement = ' DROP TRIGGER ' + @name
EXECUTE(@statement)
END
ELSE IF (@type = ' U ')
BEGIN
PRINT ' DROPING TABLE : ' + @name + ' OF type ' + @type + ' (' + @type_desc + ') '
SET @statement = ' DROP TABLE ' + @name
EXECUTE(@statement)
END
ELSE IF (@type = ' FN ')
BEGIN
PRINT ' DROPING FUNCTION : ' + @name + ' OF type ' + @type + ' (' + @type_desc + ') '
SET @statement = ' DROP FUNCTION ' + @name
EXECUTE(@statement)
END
ELSE
PRINT ' Didn 't drop object ' + @name + ' of type ' + @type + ' (' + @type_desc + ')' FETCH NEXT
FROM
OBJECTS INTO @name,
@type,
@type_desc,
@parentName
END CLOSE OBJECTS DEALLOCATE OBJECTS
回答by John Woo
if you want to use single quote inside a prepared statement, escape it with another single quote, example,
如果要在准备好的语句中使用单引号,请使用另一个单引号将其转义,例如,
SET @statement = 'world''s view';
SET @statement2 = 'world''s view';
from your example above
从你上面的例子
SET @statement = '
IF(@type = ''F'') or (@type = ''C'') or
(@type = ''D'') or (@type=''F'') or
(@type=''K'')'
-- the strings are all red.
回答by Rockstart
Single quote is used to represent a string literal in SQL. If you need to explicitly insert a single quote , you should use double single quotes ('')
单引号用于表示 SQL 中的字符串文字。如果需要显式插入单引号,则应使用双单引号 ('')
回答by Raj
It should be like this:
应该是这样的:
SET @statement = 'IF(@type = ''F'') or (@type = ''C'') or (@type = ''D'') or (@type=''F'') or (@type=''K'')'
Raj
拉吉