MySQL, как распознать между чистым числом и смешанным числом / буквой без функции? - PullRequest
0 голосов
/ 30 ноября 2018

В базе данных MySQL у меня есть столбец в таблице, который имеет как чистые числа, так и смешанные числа / буквы.Там нет шаблона, и я хочу различить, если это чистое число, и пометить его как true, в противном случае false.Есть ли хороший метод, который я могу использовать?Я пробовал:

ID REGEXP '^[[:digit:]]+$',
ID REGEXP '[0-9]+',
   REGEXP '^[a-zA-Z.]+$',
   REGEXP '[^0-9]*1[^0-9]*2[^0-9]*3[^0-9]*4[^0-9]*5[^0-9]*'

Колонка:

2A0000BY
4A00A0BF.1
12345678
12345679.1
300000BE
123456FD
3S435F40

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы можете попробовать использовать оператор CASE вместе с регулярным выражением во время оператора SELECT.

Что-то вроде этого может работать: он возвращает true / 1 для каждой записи "id", которая состоит только из чисел, и false / 0в противном случае:

SELECT
  id,
  CASE 
     WHEN id regexp '^[0-9.]*$' THEN true
     ELSE false
  END AS is_only_numbers
FROM strings;

Демонстрация скрипты SQL

0 голосов
/ 30 ноября 2018

Как насчет использования чего-то вроде следующего для сопоставления чисел.Если нет, это означает, что у него есть несколько букв:

ID REGEXP '^[\-]?[0-9]+\\.?[0-9]*$'

Вы также можете сделать это без использования REGEX, например:

CONCAT('',ID * 1) = ID

Вы можете протестировать полные запросы для обоих подходов здесь .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...