我正在尝试运行一个简单的insert语句。但是它具有一些特殊字符,这给了我错误。如何对其进行转义以使其按原样插入表中。
update history set comments = 'my testing's' where id= '1323';
答案 0 :(得分:3)
两个撇号:
update history set comments = 'my testing''s' where id= '1323';
^^
here
答案 1 :(得分:3)
update history set comments = 'my testing's' where id= '1323';
这引发ORA-00933,因为撇号'
与单引号相同,我们用它来绑定字符串文字。因此,编译器认为您的字符串在g
之后完成,而您得到的错误是因为它不理解以下s
的含义。
要解决此问题,我们可以这样避免撇号:
update history set comments = 'my testing''s' where id= '1323';
显式编辑长字符串可能会给您带来麻烦,因此有一种特殊的语法q'[...]'
可以转义字符串中的所有引号:
update history set comments = q'[all testing's done by Baba O'Reilly]'
where id= '1323';
如果我有类似@这样的字符,该怎么办?
在这种情况下,@
不是特殊字符。无需逃避。
答案 2 :(得分:1)
在Oracle中,您也可以使用q引号:
update history set comments = q'(my testing's' where id= '1323)';
答案 3 :(得分:0)
仅仅为了完成图片,另一个有用的选项是CHR(ascii_code)
和UNISTR(utf_code)
函数。
例如:
update history set comments = 'my testing' || chr(39) || 's' where id= '1323';
要添加特殊字符,例如欧元:
update history set comments = 'His salary is ' || unistr('\20ac') || '786,000' where id= '1323';