如何在postgresql中转义某些字符
我在postgresql的一列中有这些数据如何在postgresql中转义某些字符,postgresql,Postgresql,我在postgresql的一列中有这些数据 { "geometry":{ "status":"Point", "coordinates":[ -122.421583, 37.795027 ] }, 我用他的提问 select*来自学生,其中包含数据,如“%status%” 上面的查询返回结果,但此查询不返回 select*来自学生,其中包含数据,如“%st
{
"geometry":{
"status":"Point",
"coordinates":[
-122.421583,
37.795027
]
},
我用他的提问
select*来自学生,其中包含数据,如“%status%”代码>
上面的查询返回结果,但此查询不返回
select*来自学生,其中包含数据,如“%status:%”代码>
如何解决这个问题当然第二个没有找到匹配项,值中没有状态:
文本。我想你想要:
select * from students where data_json LIKE '%"status":%'
。。。然而,与大多数尝试对结构化数据进行文本模式匹配的情况一样,这通常是一个可怕的想法,会让你感到痛苦。仅举几个问题示例:
{
"somekey": "the value is \"status\": true"
}
。。。其中“状态”:
显示为文本值的一部分,即使不应该匹配,也会匹配,并且:
{
status : "blah"
}
其中,status
没有引号,引号和冒号之间有空格。就JavaScript而言,这与“状态”相同:
,但不匹配
如果您试图在json中查找字段或从json中提取字段,请使用json解析器,或可用于pl/perl、pl/pythonu等工具的json库。未来的PostgreSQL版本将具有按路径获取json键、测试json值是否存在等功能,但9.2没有
此时,您可能会想“为什么我不使用正则表达式呢?”。不要这样说,您不想尝试在regex中编写完整的JSON解析器 我能用hstore做那种类型的吗search@user194932147hstore
是平面的,没有嵌套键。您可能会编写代码,将json
扁平化为hstore
并忽略/覆盖重复的密钥,但这(a)有点不安全,(b)需要您完成大部分工作,以便正确搜索json密钥。正如我所说的,使用PL/V8、PL/Perl或类似工具来编写一个键查找函数或查找其他人已经编写的函数。可以在键查找函数上创建函数索引。