Выберите строки из идентификаторов запятой в столбце

float f = 102.236569f; 
DecimalFormat decimalFormat = new DecimalFormat("#.##");
float twoDigitsF = Float.valueOf(decimalFormat.format(f)); // output is 102.24
-1
задан Digerkam 13 July 2018 в 14:58
поделиться

3 ответа

0
ответ дан Digerkam 17 August 2018 в 12:32
поделиться
1
ответ дан donPablo 17 August 2018 в 12:32
поделиться

Существует множество причин не хранить идентификаторы в списках с разделителями-запятыми:

  • Значения должны храниться с использованием соответствующего типа. Номера не должны храниться в виде строк.
  • Внешние ключи должны быть правильно объявлены.
  • SQL-таблицы традиционно имеют одно значение для каждого столбца, а не номер переменной.
  • SQL имеет довольно плохие возможности обработки строк.
  • Запросы на такие структуры не могут легко использовать индексы.
  • SQL имеет действительно отличную структуру данных для хранения списков. Это называется table.

Иногда мы придерживаемся действительно, действительно, действительно, действительно, действительно, очень плохих решений.

MySQL offset work-around, называемый find_in_set():

SELECT i.*
FROM items i JOIN
     items_rel ir
     ON find_in_set(i.id, ir.ids) > 0;

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

3
ответ дан Gordon Linoff 17 August 2018 в 12:32
поделиться
Другие вопросы по тегам:

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