1

样本数据,存储在 S3 的文件中。如您所见,我的数据格式是每行一个 json

{"first":  "John", "last": "Smith"}
{"first":  "Mary", "last": "O'Hara"}
{"first":  "Mary", "last": "Oats"}

我的最终目标是按姓氏查询,并使用 like 运算符和用户提供的子字符串。所以我一步一步从易到难:

此查询有效并返回所有行:

select s.* from s3object s 

好的!让我们继续。我尝试的下一个查询有效并按预期返回 John Smith

select s.* from s3object s where s."last" = 'Smith'

下一步是通过姓氏的子字符串进行尝试。让我们找出所有姓氏以“O”开头的人。

select s.* from s3object s where s."last" like 'O%';

这有效并返回我的数据集中的两个玛丽。

下一步是行不通的。我想查找姓氏以 O 和撇号开头的所有用户。这是我做不到的。我试过了:

select s.* from s3object s where s."last" like 'O'%'
select s.* from s3object s where s."last" like 'O\'%'
select s.* from s3object s where s."last" like "O'%"

它们都不起作用。如何在 s3 select 中将单引号 (') 放在字符串文字中?

4

2 回答 2

4

你只需要使用两个单引号

SELECT *
FROM Test.testing
WHERE "last" = 'O''Hara'; 

结果

于 2019-09-02T20:24:06.710 回答
1

尝试以下查询:

select s.* from s3object s where s."last" like 'O''%'

要转义单引号,您需要在它之前再指定一个单引号。

于 2019-09-03T13:39:51.393 回答