这个问题在这里已经有答案了:
postgresql:如何逃逸(1个答案)
在postgresql中插入带单引号的文本(7个答案)
在postgresql中转义所有单引号(1个答案)
9个月前关门了。
我制作了一个postgresql表,其中包含牛津大学政府响应跟踪器处理covid-19的数据。
如果有人感兴趣,这里是数据源的链接。
您可以下载json或csv;在我的情况下,我使用的是csv格式。
文件包含以下列:
CountryName
CountryCode
Date
C1_School closing
C1_Flag
C2_Workplace closing
C2_Flag
C3_Cancel public events
C3_Flag
C4_Restrictions on gatherings
C4_Flag C5_Close public transport
C5_Flag
C6_Stay at home requirements
C6_Flag
C7_Restrictions on internal movement
C7_Flag
C8_International travel controls
E1_Income support
E1_Flag
E2_Debt/contract relief
E3_Fiscal measures
E4_International support
H1_Public information campaigns
H1_Flag
H2_Testing policy
H3_Contact tracing
H4_Emergency investment in healthcare
H5_Investment in vaccines
M1_Wildcard
ConfirmedCases
ConfirmedDeaths
StringencyIndex
StringencyIndexForDisplay
StringencyLegacyIndex
StringencyLegacyIndexForDisplay
GovernmentResponseIndex
GovernmentResponseIndexForDisplay
ContainmentHealthIndex
ContainmentHealthIndexForDisplay
EconomicSupportIndex
EconomicSupportIndexForDisplay
回到问题上来,我想创建一个简单的sql查询,比如
SELECT * FROM govt_respond_tracker
WHERE countryname in ('list_of_african_countries')
Order BY countryname ASC,
datec ASC;
这个查询的目的是调用文件中所有可用的非洲国家。
然而,当我要称之为“科特迪瓦”(象牙海岸)时,问题就出现了。
单引号导致错误,阻止返回我想要的结果。
我想要的这个结果就是sql输出,在sql输出中包含“cote d'ticoide”作为它的值。
那么,我的问题是,我最好的解决方法是什么?
非常感谢您的时间!
3条答案
按热度按时间rsl1atfo1#
您可以将单引号替换为双引号,如
''
e、 另一个是你可以用的(E'\\'
)例如。E'Cote d\\'Ivoire'
转义单引号我认为你最好的办法是把名单硬编码
2ul0zpep2#
要想逃过一个'级',你需要加倍:
0aydgbwb3#
为了保持输入文本的完整性,还可以将封闭标记从单个引号更改为另一个(一组)字符,例如
$$
```select $$Cote d'Ivoire$$;
?column?
Cote d'Ivoire
(1 row)