postgresql—在sql中面对诸如“cote d'Ivodia”之类的值时,如何返回结果?

kkih6yb8  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(430)

这个问题在这里已经有答案了

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”作为它的值。
那么,我的问题是,我最好的解决方法是什么?
非常感谢您的时间!

rsl1atfo

rsl1atfo1#

您可以将单引号替换为双引号,如 '' e、 另一个是你可以用的( E'\\' )例如。 E'Cote d\\'Ivoire' 转义单引号
我认为你最好的办法是把名单硬编码

SELECT * FROM govt_respond_tracker
WHERE countryname in ('country1', 'country2', 'Cote d''Ivoire')
Order BY countryname ASC,
datec ASC;
2ul0zpep

2ul0zpep2#

要想逃过一个'级',你需要加倍:

'Cote d''Ivoire'
0aydgbwb

0aydgbwb3#

为了保持输入文本的完整性,还可以将封闭标记从单个引号更改为另一个(一组)字符,例如 $$ ```
select $$Cote d'Ivoire$$;
?column?

Cote d'Ivoire
(1 row)

相关问题