将Inert语句插入包含“'”符号的字符串

时间:2019-06-25 23:05:20

标签: sql-server tsql

我要一个整数和两个文本字符串一个接一个地插入。每个字符串可以包含一些单引号和双引号以及逗号。它给我错误信息:

  

第15级状态1行6的消息102
  's'附近的语法不正确

和ssms中的颜色不是它应该的样子,而是随机的。

我尝试在表名之后的列名之前和之后插入'

insert into Items_Desc (fK_itemnum, desc_wUOM, desc_woUOM) 
values
(1, 'Careus seat covers 20/250s', 'Careus seat covers'),
(2, 'Plastus Table Sheets 66" x90"',10/20s', 'Plastus Table Sheet 66" x 90"'),
(3, 'Plastus Table Sheets 66" x72",10/24s', 'Plastus Table Sheets 66" x 72"'),
(4, 'Plastus Table Sheets 66" x90"',10/16s', 'Plastus Table Sheets 66" x 90"'),
(5, 'Plastus Table Sheets 66" x72"',10/20s', 'Plastus Table Sheets 66" x 72"')

2 个答案:

答案 0 :(得分:0)

我认为这就是您要寻找的:

 INSERT INTO items_desc 
                (fk_itemnum, 
                 desc_wuom, 
                 desc_wouom) 
    VALUES      (1, 
                 'Careus seat covers 20/250s', 
                 'Careus seat covers'), 
                (2, 
                 'Plastus Table Sheets 66" x90"'',10/20s', 
                 'Plastus Table Sheet 66" x 90"'), 
                (3, 
                 'Plastus Table Sheets 66" x72",10/24s''', 
                 'Plastus Table Sheets 66" x 72"'), 
                (4, 
                 'Plastus Table Sheets 66" x90"'',10/16s', 
                 'Plastus Table Sheets 66" x 90"'), 
                (5, 
                 'Plastus Table Sheets 66" x72"'',10/20s', 
                 'Plastus Table Sheets 66" x 72"') 

答案 1 :(得分:0)

这是您的插入语句的修订版:

insert into Items_Desc (fK_itemnum, desc_wUOM, desc_woUOM) 
values
(1, 'Careus seat covers 20/250s', 'Careus seat covers')
,(2, 'Plastus Table Sheets 66" x90"'',10/20s', 'Plastus Table Sheet 66" x 90"')
,(3, 'Plastus Table Sheets 66" x72",10/24s', 'Plastus Table Sheets 66" x 72"')
,(4, 'Plastus Table Sheets 66" x90"'',10/16s', 'Plastus Table Sheets 66" x 90"')
,(5, 'Plastus Table Sheets 66" x72"'',10/20s', 'Plastus Table Sheets 66" x 72"')

解释:
在SQL Server中,单引号表示字符串的开头或结尾。
为了传递包含单引号的字符串,您需要通过将其加倍来对其进行转义-因此,像Hi, I'm Zohar这样的字符串应为Hi, I''m Zohar

话虽如此,您的原始字符串具有相邻的单引号和双引号这一事实使得很难找到一次读取所有五行的有问题的单引号-因此,最简单的解决方法是分而治之-这就是为什么我将逗号移动到行的开头而不是将它们放在结尾的原因。这使我可以简单地注释掉除第一行以外的所有行,运行插入,然后重复进行直到找到第一行有问题的行为止。修复该行并重复该过程-不到一分钟的时间,我就能使用测试环境查找并修复所有三个有问题的行。