2017-01-20 6 views
0

spark SQLのtranslateregexp_replaceの違いは何ですか?translateとregexp_replaceの相違点

文字列内の部分文字列、整数値、ブール値のような他のデータ型を置きたいと思います。

たとえば、

func("hello","e","a") = "hallo" 
func(true,true ,false) = false 
func(112,112,9) = 9 
func(112,115,9) = 112 

どちらを使用すればよいか、それぞれの利点と欠点は何ですか?

答えて

3

単に等価ではありません。

  • translateは文字通り、別の文字テーブルに1つの文字テーブルを変換するために使用されます。それはコンテキストを気にせず、正規表現を使用せず、手元のキャラクターのみを考慮します。あなたはそれが適用される場合のみを提供してきました例から、単一の文字置換される:一般translate

    spark.sql("SELECT TRANSLATE('hello', 'e', 'a')").show() 
    
    +----------------------+ 
    |translate(hello, e, a)| 
    +----------------------+ 
    |     hallo| 
    +----------------------+ 
    

    は、無効な文字やその他の単純なクリーンアップタスクを処理するのに便利です。書くことが簡単で、少し実行時のオーバーヘッドがあります

    spark.sql("SELECT TRANSLATE('ed-ba', 'abcde', '12345')").show() 
    
    +------------------------------+ 
    |translate(ed-ba, abcde, 12345)| 
    +------------------------------+ 
    |       54-21| 
    +------------------------------+ 
    
  • regexp_replace。これはまさにそれが言うことです。あなたは自由にJava正規表現の完全な機械を手に入れることができます。 文字列の部分文字列を置き換えたい場合は、これはあなたが探しているものです。

  • なしは、の整数値およびブール値のような他のデータ型を置き換えるためには適用できません。この使用のためにCASE ... WHEN ... OTHERWISE

関連する問題