Spark SQL - Regex для сопоставления только чисел

Я пытаюсь убедиться, что определенный столбец в кадре данных не содержит недопустимых значений (нечисловые данные). Для этой цели я пытаюсь использовать сопоставление регулярных выражений, используя rlike для сбора недопустимых значений в данных:

введите описание изображения здесь

Мне нужно собрать значения с помощью строковых символов или пробелов или запятых или любых других символов, которые не похожи на числа. Я старался:

spark.sql("select * from tabl where UPC not rlike '[0-9]*'").show()

но это не работает это производит 0 строк.

Любая помощь приветствуется. Спасибо.

Всего 1 ответ


rlike ищет любые совпадения в строке. Звездочка (*) означает 0 или много. Наличие нулевых чисел где-то в строке относится к каждой возможной строке. Вам нужно указать, что вы хотите сопоставить с начала ^ до конца строки $

spark.sql("select * from tabl where UPC not rlike '^[0-9]*$'").show()

в качестве альтернативы вы также можете сопоставить любой отдельный нечисловой символ в строке [^0-9]

spark.sql("select * from tabl where UPC rlike '[^0-9]'").show()