Я хотел бы нарисовать VARCHAR
на SQL INTEGER
, предоставив значение по умолчанию, если какое-то значение в поле не будет правильно преобразовываться. Что-то вроде:Взаимозаменяемость строки для целого числа
sql> SELECT str FROM tbl; -- CREATE TABLE tbl (str VARCHAR(12), ...)
str
========
12345
-1
foo
sql> SELECT CAST((CASE WHEN ... THEN str ELSE '-9999' END) AS INTEGER) AS "int" FROM tbl;
int
========
12345
-1
-9999
Что я могу положить в эллипсис выше для получения желаемых результатов?
Этот вопрос задан и ответил на SO для многих конкретных БД, но мне интересно, есть ли более или менее портативный способ достичь этого?
Нет никакого портативного способа сделать это. –
Ваша лучшая ставка - хранить целочисленные данные в целых полях. Не смешивайте строковые и целочисленные данные вместе. – HLGEM
@ HLGEM, вы правы, конечно, но это не та среда, которая у меня есть. – pilcrow