我在处理sql中的长文本时遇到了一个问题。
例如,我有这个数据
(26,Contacted,Hi, thank you for helping ,Alaa,Alaa,'2018-12-04 14:45:36')
预期结果:
ID 25
Status Contacted
comment Hi, thank you for helping
Updated_By Alaa
Created_By Alaa
Date_Created 2018-12-04 14:45:36
然而,这就是我得到的
ID 25
Status Contacted
comment Hi
Updated_By thank you for helping
Created_By Alaa
Date_Created Alaa
将插入该表
ID int,
Status nvarchar(1000),
comment nvarchar(max),
Updated_By nvarchar(1000),
Created_By nvarchar(1000),
Date_Created DATETIME)
我插入声明如下
insert into xyz(ID,Status,comments,Updated_By,Created_By,Date_Created)
select ID = JSON_VALUE(S,'$[0]'),
Status = JSON_VALUE(S,'$[1]'),
comments= JSON_VALUE(S,'$[2]'),
Updated_By = JSON_VALUE(S,'$[3]'),
Created_By = JSON_VALUE(S,'$[4]'),
Date_Created = JSON_VALUE(S,'$[5]')
FROM @dataset
Cross Apply ( values ( '["'+replace(STRING_ESCAPE(records,'json'),',','","')+'"]' ) ) B(S)
@数据集是一个包含记录的表
如何在不拆分评论部分的情况下拆分文本?
需要引用字符串文字,即
insert SomeTable (Id, Status, comment, Updated_By, Created_By, Date_Created)
values (26,'Contacted',N'some comment that may contain '',''',
'Alaa','Alaa','2018-12-04 14:45:36');
这里注意到'
围绕字符串文字,其上的N
前缀表示";unicode";(尽管非unicode文字将毫无问题地升级为unicode列(,并且值中的单引号需要加倍,即''
。
请注意,如果您是从代码而不是作为一个固定的SQL脚本来执行此操作,则应该使用参数:
insert SomeTable (Id, Status, comment, Updated_By, Created_By, Date_Created)
values (@id, @status, @comment, @updatedBy, @createdBy, @dateCreated);
向正在使用的任何数据访问API添加参数。