1

データフレームからクエリを実行しているうちに、rlikeをあまり使用することはありませんでした。Spark SQLのように、末尾の数字を含むすべての文字列を検索する

サンプルデータ:

column_a|column_b 
1|abc xyz 
2|123 abc xyz 
3|abc 123 xyz 
4|abc 123 
5|xyz 123 

予想される出力:

column_a|column_b 
4|abc 123 
5|xyz 123 

私が試してみました:

select * from table_1 where column_b rlike '\d+$' (select * from table_1 where column_b rlike '/\d+$') 

出力(結果なし):

column_a|column_b 

私も試してみた:

select * from table_1 where column_b rlike '\d*$' (select * from table_1 where column_b rlike '/\d*$') 

出力(全行):

column_a|column_b 
1|abc xyz 
2|123 abc xyz 
3|abc 123 xyz 
4|abc 123 
5|xyz 123 

は私の正規表現が間違ってますか?私はpythonとオンラインテスターを使用してテストし、それが正しいように見えます。あるいは、rlikeは特定の正規表現をサポートしていますか?

答えて

2

これを機能させるには、さらにエスケープする必要があります。特に:

spark.sql("SELECT 'abc 123' RLIKE '\\\\d+$'").show() 
+------------------+ 
|abc 123 RLIKE \d+$| 
+------------------+ 
|    true| 
+------------------+ 
spark.sql("SELECT '123 abc xyz' RLIKE '\\\\d+$'").show() 
+----------------------+ 
|123 abc xyz RLIKE \d+$| 
+----------------------+ 
|     false| 
+----------------------+ 
関連する問題