2017-01-04 46 views
1

我有一个将数据插入数据库的SQL查询。 下面是我的样本数据:SQL Escape'#'符号

  • 订单ID:
  • 电子邮件:#TestDistribution

然而,当我试图插入OrderIDEmail值表,但''不能被SQL Server读取。

那么,我该如何逃避它呢?

我有一个撇号的想法可以使用CHAR(29)逃脱和#相当于什么?

下面是我的查询:

INSERT INTO orders(orderid,email) VALUES(1,'#TestDistribution') 

下面是表的结构:

订单

  • orderid: int
  • email: nchar(150)

服务器没有发生错误,但在检查订单表时,未插入数据。

+0

请显示您的插入语句。 –

+0

请发布您的INSERT查询 –

+0

列电子邮件的数据类型是什么? –

回答

0

感谢您在这里发布您的答案。这个问题已经解决了。我发现我的服务器中有一些限制特殊字符的设置。

道歉。

谢谢大家!

1

使用上SQL Server 2008正常工作对我说:

创建/插入:

CREATE TABLE yourtable 
    ([OrderID] int, [Email] nvarchar(99)) 
; 

INSERT INTO yourtable 
    ([OrderID], [Email]) 
VALUES 
    (1, '#TestDistribution') 
; 

选择:

SELECT * FROM yourtable 

输出:

OrderID Email 
1  #TestDistribution 
+0

嗨。我正在使用SQL Server 2008.这是与您的版本相同的版本吗? –

+0

@IanSiñel是的,更具体地说,我在SQL Server 2008 R2中测试了它10.50.4000.0 – Matt

1

you'vve有两个'结束

尝试

INSERT INTO orders(orderid,email) VALUES(1,'#TestDistribution') 
+0

我仍然得到相同的输出。数据未被插入。 –

+0

如果您删除了#,会发生什么情况? #肯定是问题吗?这些是你桌子上唯一的字段吗?字段是否需要填充非空数据?可能向我们展示您的表的CREATE TABLE – Cato

+0

您是否证明了#是问题,是一个重要问题 - 如果问题是#,那么将#更改为X可能会阻止错误 - 这不是修复,这是一个实验 - 你试过这个吗? – Cato

0

确保您的列类型应为varchar

create table orders(orderid int(30),email varchar(30)); 
insert into orders value(1,'#TestDistribution'); 
select * from orders;