Cross-DBMS способ проверить, является ли строка числовой - PullRequest
4 голосов
/ 14 января 2011

Хорошо, у меня есть это поле: code varchar(255).Он содержит некоторые значения, используемые в нашей процедуре экспорта, такие как

DB84
DB34
3567
3568

Мне нужно выбрать только автоматически сгенерированные (полностью числовые) поля

WHERE is_numeric(table.code)

is_numeric() проверяет поле codeсодержит только положительные цифры.

Можете ли вы предложить что-нибудь, что будет работать как в MySQL 5.1, так и в Oracle 10g?

1 Ответ

4 голосов
/ 14 января 2011

Ниже приведены три отдельные реализации для каждого из SQL Server, MySQL и Oracle.Ни один из них не использует (или не может) использовать один и тот же подход, поэтому, похоже, нет кросс-СУБД.Для MySQL и Oracle показывается только простой целочисленный тест;для SQL Server показан полный числовой тест.

Для SQL Server: обратите внимание, что isnumeric ('.') возвращает 1 .. но на самом деле его нельзя преобразовать в число с плавающей точкой.Некоторый текст, такой как '1e6', не может быть напрямую преобразован в числовой, но вы можете пройти через число с плавающей запятой, а затем числовой.* case when REGEXP_LIKE(col, '[^0-9]') then col*1 end

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