我有以下文字:
Price is .....
return policy is....
Mega's accept....
我想将整个文本插入TEXT
我写的是:
Insert into A (id,msg) values (5, ' Price is .....
return policy is....
Mega's store online ....')
Mega's
是商店的名称。此名称中的'
会导致查询认为它是文本的结尾......
所以我收到错误消息:
错误:列"价格是....."不存在
我尝试使用SELECT插入,但这也不起作用。我收到相同的错误消息。
如何执行此插入?
答案 0 :(得分:2)
您可以将字符串中的单引号加倍:'Mega''s store online'
。
或者,您可以通过函数quote_literal()
传递任何字符串,然后处理正确的引用和其他问题,例如SQL-injection。当字符串来自某个允许在字符串中使用单引号的应用程序时,这很有用。
INSERT
命令应为:
Insert into A (id,msg) values (5, ' Price is .....'
'return policy is....'
'Mega''s store online ....');
你可以在多行上打破长字符串,但每行必须有一个开始和结束的单引号。
答案 1 :(得分:2)
如果您不想(或不能)更改实际文本,请使用dollar quoting。只需将第一个和最后一个process
替换为例如'
:
$$
您需要使用实际文本中没有出现的分隔符。如果您的文字可以包含Insert into A (id,msg) values (5, $$ Price is .....
return policy is....
Mega's store online ....$$)
,您可以使用不同的内容,例如:$$
$not_there$
答案 2 :(得分:0)
我会使用CHAR(39)。
示例:
Mega' + CHAR(39) + 's store online....'