#sql #db2
Вопрос:
Я пытаюсь вернуть числа из строк, которые являются либо целыми числами (положительными или отрицательными), либо числами с точностью до двух знаков после запятой, однако код, похоже, игнорирует числа, начинающиеся с 0, я надеюсь на некоторую помощь в устранении этой проблемы, код выглядит следующим образом :
WITH A AS(
SELECT CURRENT_BALANCE, ( CASE WHEN (REGEXP_LIKE(CURRENT_BALANCE,'^-?[0-9] (.[0-9]{1,2})?
-- Проблема заключается в том, что regexp_like заключается в том, что приведенный выше код только что вернул мне номера, которые не были приняты
Изменить: Пример того, что не возвращается: 0.00, -0.07, 0.04 Спасибо
Комментарии:
1. Пожалуйста, приведите примеры того, что соответствует, а что нет, когда вы считаете, что это должно быть. Кроме того, зачем
current_balance
хранить в виде строки?2. Извините, что я добавил примеры в пост и, честно говоря, как изначально была настроена таблица - предположительно, чтобы иметь возможность добавлять N/A или иным образом отличать, где нам не хватает информации, в отличие от просто нуля
3. Ваш код обрабатывает указанные значения так же, как он обрабатывает целые числа: dbfiddle.uk/. ...
Ответ №1:
Пожалуйста, попробуйте с WHERE T = 1
WITH A AS(
SELECT CURRENT_BALANCE, ( CASE WHEN (REGEXP_LIKE(CURRENT_BALANCE,'^-?[0-9] (.[0-9]{1,2})?
Комментарии:
1. Это вернет атрибуты, которые соответствовали критериям REGEXP_LIKE, однако я использовал код , чтобы найти строки , которые этого не сделали, я ищу помощи в том, почему следующее не соответствует критериям и как это исправить : 0.00, 0.06, -0.04
2. Не могли бы вы поделиться образцами данных из таблицы BALANCE_TABLE, с которыми это не работает.
3. Либо сообщите, что не так с результатом инструкции по ссылке dbfiddle, либо отредактируйте это заявление с вашими данными, предоставьте соответствующую ссылку и опишите, что не так с результатом в ваших данных.
)) then 1 ELSE 0 end ) AS T FROM BALANCE_TABLE )
SELECT * FROM A
WHERE T = 0
LIMIT 1
-- Проблема заключается в том, что regexp_like заключается в том, что приведенный выше код только что вернул мне номера, которые не были приняты
Изменить: Пример того, что не возвращается: 0.00, -0.07, 0.04 Спасибо
Комментарии:
1. Пожалуйста, приведите примеры того, что соответствует, а что нет, когда вы считаете, что это должно быть. Кроме того, зачем
current_balance
хранить в виде строки?2. Извините, что я добавил примеры в пост и, честно говоря, как изначально была настроена таблица - предположительно, чтобы иметь возможность добавлять N/A или иным образом отличать, где нам не хватает информации, в отличие от просто нуля
3. Ваш код обрабатывает указанные значения так же, как он обрабатывает целые числа: dbfiddle.uk/. ...
Ответ №1:
Пожалуйста, попробуйте с WHERE T = 1
Комментарии:
1. Это вернет атрибуты, которые соответствовали критериям REGEXP_LIKE, однако я использовал код , чтобы найти строки , которые этого не сделали, я ищу помощи в том, почему следующее не соответствует критериям и как это исправить : 0.00, 0.06, -0.04
2. Не могли бы вы поделиться образцами данных из таблицы BALANCE_TABLE, с которыми это не работает.
3. Либо сообщите, что не так с результатом инструкции по ссылке dbfiddle, либо отредактируйте это заявление с вашими данными, предоставьте соответствующую ссылку и опишите, что не так с результатом в ваших данных.
)) then 1 ELSE 0 end ) AS T FROM BALANCE_TABLE )
SELECT * FROM A
WHERE T = 1
LIMIT 1
Комментарии:
1. Это вернет атрибуты, которые соответствовали критериям REGEXP_LIKE, однако я использовал код , чтобы найти строки , которые этого не сделали, я ищу помощи в том, почему следующее не соответствует критериям и как это исправить : 0.00, 0.06, -0.04
2. Не могли бы вы поделиться образцами данных из таблицы BALANCE_TABLE, с которыми это не работает.
3. Либо сообщите, что не так с результатом инструкции по ссылке dbfiddle, либо отредактируйте это заявление с вашими данными, предоставьте соответствующую ссылку и опишите, что не так с результатом в ваших данных.
)) then 1 ELSE 0 end ) AS T FROM BALANCE_TABLE )
SELECT * FROM A
WHERE T = 0
LIMIT 1
— Проблема заключается в том, что regexp_like заключается в том, что приведенный выше код только что вернул мне номера, которые не были приняты
Изменить: Пример того, что не возвращается: 0.00, -0.07, 0.04 Спасибо
Комментарии:
1. Пожалуйста, приведите примеры того, что соответствует, а что нет, когда вы считаете, что это должно быть. Кроме того, зачем
current_balance
хранить в виде строки?2. Извините, что я добавил примеры в пост и, честно говоря, как изначально была настроена таблица — предположительно, чтобы иметь возможность добавлять N/A или иным образом отличать, где нам не хватает информации, в отличие от просто нуля
3. Ваш код обрабатывает указанные значения так же, как он обрабатывает целые числа: dbfiddle.uk/. …
Ответ №1:
Пожалуйста, попробуйте с WHERE T = 1
Комментарии:
1. Это вернет атрибуты, которые соответствовали критериям REGEXP_LIKE, однако я использовал код , чтобы найти строки , которые этого не сделали, я ищу помощи в том, почему следующее не соответствует критериям и как это исправить : 0.00, 0.06, -0.04
2. Не могли бы вы поделиться образцами данных из таблицы BALANCE_TABLE, с которыми это не работает.
3. Либо сообщите, что не так с результатом инструкции по ссылке dbfiddle, либо отредактируйте это заявление с вашими данными, предоставьте соответствующую ссылку и опишите, что не так с результатом в ваших данных.