如何使用单引号sql server 2005插入文本

36 sql quotes sql-server-2005 quotations

我想在sql server 2005数据库中将单引号Eg john的文本插入到表中

Bin*_*ony 23

如Kirtan所指出的,
如果你试图通过sp_executesql尝试执行动态sql(这首先不是一个好主意),那么下面的代码对你有用

sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')'
Run Code Online (Sandbox Code Playgroud)


Bra*_*non 19

答案真的取决于你是如何做到的INSERT.

如果要指定SQL文本,则需要使用双勾选方法:

-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John''s')

-- Using a parameter, with a direct insert
DECLARE @Value varchar(50)
SET @Value = 'John''s'
INSERT INTO Table1 (Column1) VALUES (@Value)

-- Using a parameter, with dynamic SQL
DECLARE @Value varchar(50)
SET @Value = 'John''s'
EXEC sp_executesql 'INSERT INTO Table1 (Column1) VALUES (@p1)', '@p1 varchar(50)', @Value
Run Code Online (Sandbox Code Playgroud)

如果从代码执行INSERT,请使用参数:

// Sample ADO.NET
using (SqlConnection conn = new SqlConnection(connectionString)) {
    conn.Open();
    using (SqlCommand command = conn.CreateCommand()) {
        command.CommandText = "INSERT INTO Table1 (Column1) VALUES (@Value)";

        command.Parameters.AddWithValue("@Value", "John's");

        command.ExecuteNonQuery();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您的数据包含用户输入,直接或间接的USE PARAMETERS.参数可防止SQL注入攻击.永远不要使用用户输入构建动态SQL.

  • 你能提供更多关于你的查询的细节吗?参数几乎适用于所有查询.我很好奇为什么他们不适合你的情况. (4认同)

jit*_*ska 16

这对我有用:

  INSERT INTO [TABLE]
  VALUES ('text','''test.com''', 1)
Run Code Online (Sandbox Code Playgroud)

基本上,您可以使用要插入的单引号并将其替换为两个.因此,如果您想插入一串文本('text')并在其周围添加单引号,那么它将是('''text''').希望这可以帮助.


Kir*_*tan 7

INSERT INTO Table1 (Column1) VALUES ('John''s')
Run Code Online (Sandbox Code Playgroud)

或者您可以使用存储过程并将参数传递为 -

usp_Proc1 @Column1 = 'John''s'
Run Code Online (Sandbox Code Playgroud)

如果您使用的是INSERT查询而不是存储过程,则必须使用两个引号来转义引号,否则如果不这样做则可以.