oracle проверить что в строке только цифры

проверьте, есть ли функция «это число» в Oracle

Я пытаюсь проверить, является ли значение из столбца в запросе oracle (10g) числом, чтобы сравнить его. Что-то вроде:

Есть идеи, как это проверить?

16 ответов

Предполагая, что столбец идентификатора в myTable не объявлен как ЧИСЛО (что кажется странным выбором и, вероятно, будет проблематичным), вы можете написать функцию, которая пытается преобразовать идентификатор (предположительно VARCHAR2) в число, перехватывает исключение и возвращает «Y» или «N». Что-то вроде

Затем вы можете встроить этот вызов в запрос, т.е.

Обратите внимание, что хотя PL / SQL имеет логический тип данных, SQL его не имеет. Таким образом, хотя вы можете объявить функцию, возвращающую логическое значение, вы не можете использовать такую ​​функцию в запросе SQL.

Приятно то, что вам не нужна отдельная функция PL / SQL. Потенциально проблематичная часть состоит в том, что регулярное выражение может быть не самым эффективным методом для большого количества строк.

Возвращаемые числовые значения

Возвращаемые значения не числовые

Вы можете тестировать свои регулярные выражения, пока душе не понравится, на http://regexpal.com/ (но убедитесь, что вы установите для этого флажок совпадать по разрывам строки ).

Вот решение на основе Майкла Дарранта, которое работает для целых чисел.

Адриан Карнейро опубликовал решение, которое работает с десятичными и другими знаками. Однако, как указал Джастин Кейв, это приведет к неправильной классификации строк как «123.45.23.234» или «131 + 234».

Если вам нужно решение без PL / SQL или REGEXP_LIKE, это может помочь.

Вы можете использовать функцию регулярного выражения regexp_like в ORACLE (10g), как показано ниже:

В вызове SQL вы должны использовать что-то вроде

Это мой запрос, чтобы найти все, что НЕ является числом:

В моей области я. и, к сожалению, десятичные числа пришлось принять во внимание, иначе вам понадобится только одно из ограничений.

Как определяется столбец? Если это поле varchar, то это не число (или не хранится как единица). Oracle может выполнить преобразование за вас (например, выбрать * from someTable, где charField = 0), но он вернет только строки, в которых преобразование выполнено и возможно. Это тоже далеко не идеальная ситуация с точки зрения производительности.

Итак, если вы хотите провести сравнение чисел и рассматривать этот столбец как число, возможно, его следует определить как число?

Тем не менее, вот что вы можете сделать:

Вы также можете включить другие параметры, которые есть у обычного to_number. Используйте так:

Он не вернет строки, которые Oracle считает недопустимым числом.

Обратите внимание, что он не будет рассматривать 45e4 как число, но вы всегда можете изменить регулярное выражение, чтобы добиться противоположного.

Также примечание для тех, кто предпочитает имитировать логику числового формата Oracle с использованием «более рискованного» подхода REGEXP, пожалуйста, не забывайте учитывать NLS_NUMERIC_CHARACTERS и NLS_TERRITORY.

Ну, вы можете создать функцию is_number для вызова, чтобы ваш код работал.

Вы можете использовать этот пример

Функция для мобильного номера длиной 10 цифр и начиная с 9,8,7 с использованием регулярного выражения

Таким образом, некоторые эвристические обходные пути с ограниченной применимостью подходят для огромного сканирования.

Существует решение для случаев, когда вы точно знаете, что нечисловые значения будут содержать некоторые буквы алфавита:

И если вы знаете, что какая-то буква всегда будет присутствовать в нечисловых случаях:

Когда числовые регистры всегда будут содержать ноль:

Если условие равно нулю, то это число

Вот простой метод, который:

Конечно, это, возможно, не самый мощный метод из всех; например, «.» ошибочно идентифицируется как числовое. Однако это довольно просто и быстро, и он может очень хорошо выполнять свою работу, в зависимости от фактических значений данных, которые необходимо обработать.

Для целых чисел мы можем упростить операцию Translate следующим образом:

Как это работает

Источник

Проверьте строку на наличие цифр и символов в Oracle 11G

Я над чем-то работаю. Я должен проверить строку на валидацию. Эта строка содержит код страны и код университета (из их собственных таблиц в базе данных) и кучу цифр. Теперь мне нужно проверить эту строку. Мне нужно проверить эту строку на код страны и код университета, и если в ней есть цифры » да » или «нет».

На данный момент я много чего перепробовал. Я пытался использовать много операторов if, regexp_like, instr, substr, select и других. Но я не могу проверить строку на наличие кода страны и университета (и если у нее есть совпадающие номера).

Мой код на данный момент выглядит следующим образом:

В данный момент я настолько растерян, что даже не знаю, что делать дальше. Надеюсь, кто-нибудь из вас, ребята, сможет мне помочь.

Короче говоря. Я получил это контрольное значение (и многое другое):

Входные данные представляют собой строку, содержащую код страны (NL), число (4633 4809) и код университета (KTU). если результат истинен или он проверен, он возвращает 1 или 0.

Надеюсь, мой вопрос не слишком расплывчат.

Если бы кто-нибудь мог объяснить мне, какие функции и шаги мне нужно сделать, это было бы потрясающе

2 ответа

Я не знаю, как разделить строку в Oracle 11g. Моя входная строка ввода-это имя производителя. Если имя производителя длиннее 30 символов Найти вхождение первого вхождения открытой круглой скобки – “(“ Если найдено найдите следующее вхождение закрывающей скобки – “)” Замените последние символы.

Я работаю над приложением Windows, написанным на VBScript, и мне нужно проверить строку на наличие любых нечисловых символов, в частности на что-нибудь a-z. Я понимаю, что, вероятно, мог бы сделать это, используя функцию InStr() в сочетании с циклом, который проверяет a-z, но это просто кажется.

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

вы можете использовать regex, чтобы разделить слова на столбцы

это даст вам 4 колонки с разделенными словами.

или вы можете использовать регулярное выражение с оператором connect by, чтобы превратить ваши слова в строки.

это даст вам четыре строки

Возможно, ниже sql блочный код поможет получить то, что вы хотите в качестве вывода.

Похожие вопросы:

Мне регулярно дают файл dmp, который создается с помощью oracle v.11g (с помощью утилиты exp). Я привык импортировать этот файл в западноевропейское издание Oracle 10g XE. Импорт был бы успешно.

Я прошу своих пользователей ввести 4-6-значный номер PIN. И я хотел бы убедиться, что пользователи не могут ввести 0000, 11111 или 333333. Как я могу проверить строку на наличие 4 последовательных.

Я не знаю, как разделить строку в Oracle 11g. Моя входная строка ввода-это имя производителя. Если имя производителя длиннее 30 символов Найти вхождение первого вхождения открытой круглой скобки –.

Я работаю над приложением Windows, написанным на VBScript, и мне нужно проверить строку на наличие любых нечисловых символов, в частности на что-нибудь a-z. Я понимаю, что, вероятно, мог бы сделать.

Можно ли установить в мою машину как Oracle XE, так и Oracle 11g? В чем разница между ними? Я хочу подключиться к Oracle с помощью Access. Требуется ли для этого Oracle 11g или я могу также.

У меня возникла проблема с хранением unicode символов в Oracle 11g с использованием JPA. Когда я сохраняю строку unicode в DB, используя это (someTranslation-это объект, содержащий строки unicode).

Я использую oracle 11G с адаптером OJDBC6.jar. когда я пытаюсь запустить этот очень простой оператор insert, он выдает недопустимое исключение символов. ActiveRecord::JDBCError.

В настоящее время я переношу систему с Oracle 11g на 12c. Сервер 11g (источник) использует набор символов WE8MSWIN1252, сервер 12c (цель) использует набор символов AL32UTF8. Мы используем EXP и IMP.

Источник

Найти в столбце только цифры

Доброго времени суток

Прошу помощи в поиске табельных номеров, в которых содержатся только цифры
Например, есть таблицы Employee. В ней есть поля «lastname, name, fathername, tabnumber, lastdate, username»

Обычно табельные номера состояит из «3 буквы и 6 цифр», но иногда их заводят некорректно и ставят только цифры. Необходимо найти сотрудников у которых табельный номер состоит только из цифр. Пробовал через REGEXP_LIKE, результата поиск не дал, выводит также все подряд. Нашел запрос на просторах интернета, попытался подстроить под свои таблицы

oracle проверить что в строке только цифры. Смотреть фото oracle проверить что в строке только цифры. Смотреть картинку oracle проверить что в строке только цифры. Картинка про oracle проверить что в строке только цифры. Фото oracle проверить что в строке только цифрыDataGridView только цифры в определенном столбце
Помогите пожалуйста. Нужно чтобы в DataGridView можно было ввести только цифры в определенном.

oracle проверить что в строке только цифры. Смотреть фото oracle проверить что в строке только цифры. Смотреть картинку oracle проверить что в строке только цифры. Картинка про oracle проверить что в строке только цифры. Фото oracle проверить что в строке только цифрыОбъединение ячеек в 1 столбце от цифры до цифры в 2003 EXCEL VB
Здравствуйте, прошу о помощи. Нужен макрос, который объединил ячейки в 1 столбце от цифры до цифры.

oracle проверить что в строке только цифры. Смотреть фото oracle проверить что в строке только цифры. Смотреть картинку oracle проверить что в строке только цифры. Картинка про oracle проверить что в строке только цифры. Фото oracle проверить что в строке только цифрыНайти строки, содержащие только а-Я a-Z цифры, пробел и нижнее подчеркивание
Есть несколько тысяч строк, нужно оставить лишь те, которые не содержат ничего кроме русских и.

oracle проверить что в строке только цифры. Смотреть фото oracle проверить что в строке только цифры. Смотреть картинку oracle проверить что в строке только цифры. Картинка про oracle проверить что в строке только цифры. Фото oracle проверить что в строке только цифрыФункции. Найти сумму трехзначных чисел, содержащих только нечетные цифры
Добрый вечер! Помогите, пожалуйста! Найти сумму всех трехзначных чисел, содержащих только нечетные.

Источник

проверьте, является ли функция» это число » в Oracle

Я пытаюсь проверить, является ли значение из столбца в запросе oracle (10g) числом, чтобы сравнить его. Что-то вроде:

есть идеи, как это проверить?

15 ответов

предполагая, что столбец ID в myTable не объявляется как число (что кажется странным выбором и, вероятно, будет проблематичным), вы можете написать функцию, которая пытается преобразовать (предположительно VARCHAR2) ID в число, ловит исключение и возвращает » Y » или «N». Что-то вроде

затем вы можете вставлять в запрос, т. е.

обратите внимание, что хотя PL/SQL имеет логический тип данных, SQL этого не делает. Поэтому, пока вы можете объявить функция, возвращающая логическое значение, не может использоваться в SQL-запросе.

возвращаемые числовые значения

возвращаемые значения не числовое

вы можете проверить свои регулярные выражения сами, пока ваше сердце не будет удовлетворено в http://regexpal.com/ (но убедитесь, что вы установили флажок матч в перерывах для этого).

вы можете использовать функцию регулярного выражения «regexp_like» в ORACLE (10g), как показано ниже:

вот решение, основанное на Майкла Дарранта это работает для целых чисел.

Эдриан Карнейро опубликовано решение, которое работает для дроби и другие. Однако, как отметил Джастин Кейв, это будет неправильно классифицировать строки, такие как «123.45.23.234» или «131+234».

Если вам нужно решение без PL / SQL или REGEXP_LIKE, это может помочь.

Я против использования when others поэтому я бы использовал (возвращая «логическое целое число» из-за того, что SQL не поддерживает логические значения)

в вызове SQL вы бы использовали что-то вроде

Как определяется столбец? Если его поле varchar, то его не число (или хранится как один). Oracle может выполнить преобразование для вас (например, выберите * из someTable, где charField = 0), но он будет возвращать только строки, где преобразование имеет значение true и возможно. Это также далеко от идеальной ситуации.

Итак, если вы хотите сделать сравнение чисел и рассматривать этот столбец как число, возможно, его следует определить как число?

что сказал, Вот что вы могли бы сделать:

вы также можете включить другие параметры, которые имеет обычный to_number. Используйте как так:

Он не будет возвращать строки, которые Oracle видит как недопустимое число.

обратите внимание, что он не будет 45e4 как число, но вы всегда можете изменить регулярное выражение, чтобы выполнить обратное.

@JustinCave-замена» when value_error «на» when others » является хорошим уточнением вашего подхода выше. Эта небольшая дополнительная настройка, хотя концептуально то же самое, удаляет требование определения и последующего выделения памяти для вашей переменной l_num:

просто Примечание также для тех, кто предпочитает эмулировать логику формата Oracle number с использованием подхода» рискованное » регулярное выражение, пожалуйста, не забудьте рассмотреть NLS_NUMERIC_CHARACTERS и NLS_TERRITORY.

Это мой запрос, чтобы найти все те, которые не являются числом:

ну, вы можете создать функцию is_number для вызова, чтобы ваш код работал.

EDIT: пожалуйста, отложите ответ Джастина. Забыл эту маленькую деталь для чистого вызова SQL.

функция для мобильного номера длиной 10 цифр и начиная с 9,8,7 с помощью regexp

Я считаю, что следующее решение (на основе подхода regexp_like выше) является оптимальным:

почему я говорю это?

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

его можно использовать в SQL ie select isInteger (myCol) из mytable; поскольку он возвращает » T » из » F » вместо boolean.

он удовлетворяет утверждению чистоты WNDS,wnps.

он не полагается на, на мой взгляд, слишком широкий спектр подхода «когда другие» для определения результата.

обратите внимание, что regexp или функциональные подходы в несколько раз медленнее, чем простое условие sql.

таким образом, некоторые эвристические обходные пути с ограниченной применимостью делают sence для огромных сканирований.

есть решение для случаев, когда вы точно знаете, что нечисловые значения будут содержать букв:

и если вы знаете, что какая-то буква всегда будет присутствовать в нечисловых случаи:

когда числовые случаи всегда будут содержать ноль:

Источник

Регулярное выражение, чтобы проверить, содержит ли строка только числа

21 ответов

должен это сделать. Оригинал соответствует всему, что состоит ровно из одной цифры.

как вы сказали, вы хотите, чтобы хэш содержал только цифры.

\d и 2 оба означают одно и то же. Используемый + означает, что поиск одного или нескольких происходящих из 1.

Это позволит также для подписанных и плавающих чисел или пустой строки:

Если вы не хотите разрешить пустую строку, используйте это:

это крайний перебор для вашей цели, но вот что я использую:

как написано, reSnippet предназначен для удаления в другие регулярные выражения, поэтому вы можете извлекать (или избегать) чисел. Несмотря на все скобки, он не содержит захват групп. Таким образом,» matchOnlyNumberRe » соответствует только строкам, которые являются числами, и имеет группу захвата для всей строки.

вот тесты Jasmine, поэтому вы можете видеть, что он делает и не обрабатывает:

Если вы добавите * Квантор,

выражение будет соответствовать строкам произвольной длины цифр, а 123 вернет true. (123f все равно вернет false).

имейте в виду, что технически пустая строка представляет собой строку цифр 0-длины, и поэтому она вернет true с помощью ^9*$, если вы хотите принимать только строки, содержащие 1 или больше цифр, используйте + вместо *

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

эта функция проверяет, является ли вход числовым в классическом смысле, поскольку ожидается, что нормальная функция обнаружения чисел будет работать.

Это тест, который можно использовать для ввода HTML-формы, например.

он обходит весь JS-фольклор, например tipeof (NaN) = number, parseint (‘1 Kg’) = 1, булевы числа и тому подобное.

он делает это путем рендеринга аргумента в виде строки и проверки этой строки на регулярное выражение, подобное @codename-но разрешение записей, таких как 5. и.5

объяснение регулярного выражения:

то есть две аналогичные группы, разделенные скобками. Строка должна соответствовать любой из этих групп. Первый соответствует числам 5. и второй. 5

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *