如何查看databricks Sql中带有撇号(')的记录

问题描述 投票:0回答:1

需要查找含有特殊字符的记录。允许的字符是 连字符、逗号、正斜杠 (/)、井号和点以及撇号 (')。


In the AZURE Databricks Table having few data like  

L'ÎLE-PERROT -- Invalid
CHÉNÉVILLE -- Invalid
1205-RUE DE L'ACADIE - Valid
'4th Floor - InterContinental - Valid
VAL D'OR -- Valid
O'LEARY -- Valid
Bucure¿ti -- Invalid
LA DORÉ - Invalid

我尝试了三种方法。通过使用所有这些方法,带有撇号 (') 的值将被跳过进行验证。

  1. 通过使用正则表达式

    (REGEXP(TRIM(column1 ), '[^a-zA-Z0-9,-\-/#''\s]')
    
  2. 通过使用rlike

    (column1 rlike '[a-zA-Z0-9\\-,/#''\\s]')
    
  3. 通过使用翻译

    (TRANSLATE(column1, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,/#. -') = '')
    
regex validation testing databricks-sql rlike
1个回答
0
投票

检查下面的代码。

scala> df
.withColumn(
    "new_data", regexp_replace($"data", "[^a-zA-Z0-9,-/#. ']+", "")
)
.withColumn(
    "output",
     when(
        $"data" === $"new_data", lit("valid"))
    .otherwise("invalid")
)
.show(false)
+-----------------------------+-----------------------------+-------+
|data                         |new_data                     |output |
+-----------------------------+-----------------------------+-------+
|L'ÎLE-PERROT                 |L'LE-PERROT                  |invalid|
|CHÉNÉVILLE                   |CHNVILLE                     |invalid|
|1205-RUE DE L'ACADIE         |1205-RUE DE L'ACADIE         |valid  |
|'4th Floor - InterContinental|'4th Floor - InterContinental|valid  |
|VAL D'OR                     |VAL D'OR                     |valid  |
|O'LEARY                      |O'LEARY                      |valid  |
|Bucure¿ti                    |Bucureti                     |invalid|
|LA DORÉ                      |LA DOR                       |invalid|
+-----------------------------+-----------------------------+-------+
© www.soinside.com 2019 - 2024. All rights reserved.