Украсить целочисленные значения для сравнения в виде строк - PullRequest
2 голосов
/ 10 июня 2010

По какой-то причине мне нужно ввести мои целочисленные значения в базу данных в виде строки, затем я хочу выполнить запрос к ним и сравнить эти целые числа как строки. Есть ли способ украсить целые числа (например, от 1 до 1 миллиарда долларов США), чтобы я мог сравнить их как строки?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Просто добавьте столько начальных нулей, сколько необходимо

Таким образом, числа 1,2,3 станут в виде строки: 0000000001, 0000000002, 0000000003 Таким образом, сравнение строк будет правильным

В Java выиспользуйте:

 String.format("%09d", number); 

, чтобы иметь 9 ведущих нулей.

0 голосов
/ 10 июня 2010

Другой вариант - изменить запрос, чтобы преобразовать строковое значение обратно в целое число.(Псевдокод ниже, возможно, не скомпилируется / не сработает для вашей базы данных)

String sql = " SELECT * "
+ " FROM some_table "
+ " WHERE CAST(some_table.int_column_stored_as_string AS INTEGER) = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInteger(1, myIntValue);

Одна из проблем заключается в том, что, поскольку он запускает функцию в каждой строке, база данных не сможет использовать какие-либо индексы, определенные для some_table.int_column_stored_as_string.

...