Что является заменой оператора posix Redshift в SparkSQL? - PullRequest
0 голосов
/ 24 октября 2019

Я выполняю следующую команду Redshift SQL, используя оператор POSIX (~) для сопоставления с образцом (Возвращает true, если в строке есть 9 последовательных цифр, в противном случае false)

select '123456789' ~ '\\d{9}' as val;  --TRUE
select 'abcd123456789' ~ '\\d{9}' as val;  --TRUE
select '123456789ab' ~ '\\d{9}' as val; --TRUE

Как мне сделать такое же сопоставление с образцом в SparkSQL?

1 Ответ

0 голосов
/ 24 октября 2019

Я считаю, rlike должен сделать трюк:

spark.sql("""SELECT '123456789' rlike '\\\d{9}' as val""").show()
spark.sql("""SELECT 'ab123456789' rlike '\\\d{9}' as val""").show()
spark.sql("""SELECT '123456789abcd' rlike '\\\d{9}' as val""").show()

Весь результат в:

+----+
| val|
+----+
|true|
+----+

И:

spark.sql("""SELECT '12345678abcd' rlike '\\\d{9}' as val""").show()

Результаты:

+-----+
|  val|
+-----+
|false|
+-----+
...