如何在Trino的VARCHAR列中插入含单引号的JSON对象?
解决Trino中插入含单引号的JSON字符串报错问题
你遇到的问题根源是SQL用单引号标记字符串边界,JSON里的单引号会被误判成字符串结束符,导致语句语法不闭合。给你三种实用解决办法:
转义单引号:在SQL规则里,单引号的转义方式是再加一个单引号。把JSON里每个
'替换成'',再用单引号把整个字符串括起来。比如原JSON{'key': 'value'}对应的插入语句:INSERT INTO your_table (json_column) VALUES ('{'key'': ''value''}')改用标准JSON格式:把JSON里的单引号换成双引号(符合官方JSON规范),直接用单引号包裹整个字符串插入,这样内部双引号不会和外部单引号冲突,还能方便后续的JSON解析操作:
INSERT INTO your_table (json_column) VALUES ('{"key": "value"}')用参数化查询:如果是通过代码执行插入操作,优先用参数化语句,驱动会自动处理转义逻辑,还能避免SQL注入风险。比如Java JDBC的示例代码:
String targetJson = "{'key': 'value'}"; String sql = "INSERT INTO your_table (json_column) VALUES (?)"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, targetJson); pstmt.executeUpdate();
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

