Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Есть таблица со строковым полем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Необходимо извлечь записи, удовлетворяющие условию только для чиловых значений, например, что типа Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2009, 16:03 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. --------------------------------------------------------- IS NULL OR NOT IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2009, 20:30 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Интересный способ, но при выполнении такого запроса выдается ошибка Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2009, 07:48 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Может есть какая нибудь функция проверки на тип? Или самому придется ее писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2009, 08:04 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
То, что было написаны выше - для DB2 от версии 9.5 и выше. Других способов проверять тип не вижу. Можно написать функции типа STRASINT, STRASDATE, которые проверяют является ли входной параметр-строка целым или датой, если да, то возвращают его, если нет, то NULL. Тогда в условии можно использовать STRASINT(value) > 100 STRASDATE(value) >= '2009-09-09'. --------------------------------------------------------- IS NULL OR NOT IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2009, 08:53 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Да, версия db2 8.1, значит придется писать свою функцию. Тогда другой вопрос, как можно обработать исключительную ситуацию преобразования типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2009, 09:14 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Rust(), Пишите c или java функцию. Или 9.7 ставьте. Там можно: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2009, 17:40 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Точно, и как сам не догодался... спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 07:42 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Хотя... при создании функции в центре разработки при помощи мастера предлагает выбрать тип функции : SQL, Websphere MQ, XML и OLE DB. В 8.1 версии можно создавать java функции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 08:09 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
На мой взгляд проблема ваша решается совсем просто. Используем функцию TRANSLATE(value, '*', ' 0123456789') которая транслирует все цифры в space, а space в '*'. После трансляции цифровая строка должна стать пустой, а не цифровая будет не пустой. NULL останется NULL. Можете проверить как это работает. авторSelect * from table1 where TRANSLATE(value, '*', ' 0123456789') = ' ' Thanks, Lenny. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 15:38 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Note: For DATE you can use: авторSelect * from table1 where TRANSLATE(value, '*', ' .-0123456789') = ' ' Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 16:18 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Or even better (for dates only): авторSelect * from table1 where TRANSLATE(value, '*', ' 123456789') = ' ' and substr(value, 5, 1) in ('.', '-') and substr(value, 8, 1) in ('.', '-') Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 16:24 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
LkhigerOr even better (for dates only): авторSelect * from table1 where TRANSLATE(value, '*', ' 123456789') = ' ' and substr(value, 5, 1) in ('.', '-') and substr(value, 8, 1) in ('.', '-') Lenny Sorry. Correction: Select * from table1 where TRANSLATE(value, '*', ' .-123456789') = ' ' and substr(value, 5, 1) in ('.', '-') and substr(value, 8, 1) in ('.', '-')[/quot] Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 16:36 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
I did not find EDIT, so: авторSelect * from table1 where TRANSLATE(value, '*', ' .-123456789') = ' ' and substr(value, 5, 1) in ('.', '-') and substr(value, 8, 1) in ('.', '-') Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 16:37 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Rust(), SafeTypeMapping.java Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. make_it.batset DB2PATH="C:\PROGRAM FILES\IBM\SQLLIB" set JDK_PATH=%DB2PATH%\java\jdk set LIBS=%DB2PATH%\java %JDK_PATH%\bin\javac -extdirs %LIBS% %1 Компилируем: make_it.bat SafeTypeMapping.java Копируем SafeTypeMapping.class в %DB2PATH%\FUNCTION Регистрируемcreate function safe_int(str varchar(11)) returns int LANGUAGE Java EXTERNAL NAME 'SafeTypeMapping.str2int' DETERMINISTIC FENCED THREADSAFE NO SQL NOT NULL CALL NO EXTERNAL ACTION PARAMETER STYLE DB2GENERAL; create function safe_date(str varchar(10), format varchar(10)) returns date LANGUAGE Java EXTERNAL NAME 'SafeTypeMapping.str2date' DETERMINISTIC FENCED THREADSAFE FINAL CALL NO SQL NOT NULL CALL NO EXTERNAL ACTION PARAMETER STYLE DB2GENERAL; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 16:45 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
ещё немного. сходу текст написал, так что если немножко ошибся не обижайтесь Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. create function safe_int(str char(11)) returns int LANGUAGE C EXTERNAL NAME ' С:\somedllpath\somedll!safe_int' // вроде так DETERMINISTIC FENCED THREADSAFE NOT NULL CALL NO EXTERNAL ACTION PARAMETER STYLE GENERAL; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2009, 17:05 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
I can recommend this SQL to you. You can try. авторselect column1 from (select strip( column1) from table1) ii where replace( column1, ' ', '') = column1 and Translate(column1, ' ', '0123456789+-.') = ' ' and length(replace( column1, '+', '')) >= length(column1) - 1 and length(replace( column1, '-', '')) >= length(column1) - 1 and length(replace( column1, '.', '')) >= length(column1) - 1 and posstr(column1, '-') in (0, 1, length(column1) ) and posstr(column1, '+') in (0, 1, length(column1) ) and not exists (select * from sysibm.sysdummy1 where posstr(column1, '-') > 0 and posstr(column1, '+') > 0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2009, 01:25 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
С вашего позволения я внесу маленькое исправление в код: авторselect column1 from (select strip( column1) column1 from table1) ii where replace( column1, ' ', '') = column1 and Translate(column1, ' ', '0123456789+-.') = ' ' and length(replace( column1, '+', '')) >= length(column1) - 1 and length(replace( column1, '-', '')) >= length(column1) - 1 and length(replace( column1, '.', '')) >= length(column1) - 1 and posstr(column1, '-') in (0, 1, length(column1) ) and posstr(column1, '+') in (0, 1, length(column1) ) and not exists (select * from sysibm.sysdummy1 where posstr(column1, '-') > 0 and posstr(column1, '+') > 0) Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2009, 08:02 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
С вашего позволения я внесу маленькое исправление в код: авторselect column1 from (select strip( column1) column1 from table1) ii where replace( column1, ' ', '') = column1 and Translate(column1, ' ', '0123456789+-.') = ' ' and length(replace( column1, '+', '')) >= length(column1) - 1 and length(replace( column1, '-', '')) >= length(column1) - 1 and length(replace( column1, '.', '')) >= length(column1) - 1 and posstr(column1, '-') in (0, 1, length(column1) ) and posstr(column1, '+') in (0, 1, length(column1) ) and not exists (select * from sysibm.sysdummy1 where posstr(column1, '-') > 0 and posstr(column1, '+') > 0) Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2009, 08:06 |
|
||
|
Числовое преобразование значения
|
|||
|---|---|---|---|
|
#18+
Никаких UDF. Годится для любой версии DB2. авторselect column1 from (select strip(column1) column1 from table1) ii where replace( column1, ' ', '') = column1 and Translate(column1, ' ', '0123456789+-.') = ' ' and length(replace( column1, '+', '')) >= length(column1) - 1 and length(replace( column1, '-', '')) >= length(column1) - 1 and length(replace( column1, '.', '')) >= length(column1) - 1 and posstr(column1, '-') in (0, 1) and posstr(column1, '+') in (0, 1) and not exists (select * from sysibm.sysdummy1 where posstr(column1, '-') > 0 and posstr(column1, '+') > 0) Lenny ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2009, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=36190136&tid=1603091]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
93ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 476ms |

| 0 / 0 |
