我试图将一些文本数据插入到SQL Server 9中的表中。
文本中包含了一个引用。
我怎么逃脱呢?
我尝试使用两个单引号,但它给我带来了一些错误。
如。插入my_table值('hi, my name' s tim.');
我试图将一些文本数据插入到SQL Server 9中的表中。
文本中包含了一个引用。
我怎么逃脱呢?
我尝试使用两个单引号,但它给我带来了一些错误。
如。插入my_table值('hi, my name' s tim.');
当前回答
这应该可以
DECLARE @singleQuote CHAR
SET @singleQuote = CHAR(39)
insert into my_table values('hi, my name'+ @singleQuote +'s tim.')
其他回答
如何:
insert into my_table values('hi, my name' + char(39) + 's tim.')
STRING_ESCAPE函数可以在新版本的SQL Server上使用
这应该可以
DECLARE @singleQuote CHAR
SET @singleQuote = CHAR(39)
insert into my_table values('hi, my name'+ @singleQuote +'s tim.')
我也遇到了同样的问题,但我的问题不是基于SQL代码本身中的静态数据,而是基于数据中的值。
这段代码列出了我的数据库中所有的列名和数据类型:
SELECT DISTINCT QUOTENAME(COLUMN_NAME),DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS
但是有些列名实际上在列名中嵌入了单引号!,例如……
[MyTable].[LEOS'DATACOLUMN]
为了处理这些,我必须使用REPLACE函数以及建议的QUOTED_IDENTIFIER设置。否则,在动态SQL中使用该列时会出现语法错误。
SET QUOTED_IDENTIFIER OFF;
SET @sql = 'SELECT DISTINCT ''' + @TableName + ''',''' + REPLACE(@ColumnName,"'","''") + ...etc
SET QUOTED_IDENTIFIER ON;
双引号选项帮助我
SET QUOTED_IDENTIFIER OFF;
insert into my_table values("hi, my name's tim.");
SET QUOTED_IDENTIFIER ON;