В дополнение к нарушению первой нормальной формы из-за повторяющейся группы значений, хранящихся в одном столбце, в списках, разделенных запятыми, есть много других более практических проблем:
idlist REGEXP '[[:<:]]2[[:>:]]'
* Чтобы решить эти проблемы, вам нужно написать тонны кода приложения, заново изобрести функциональные возможности, которые СУБД уже обеспечивает гораздо более эффективно .
Списки, разделенные запятыми, настолько ошибочны, что я сделал это первой главой в моей книге: SQL Antipatterns: избегайте ошибок программирования баз данных .
Бывают случаи, когда вам нужно использовать денормализацию, но, поскольку @OMG Ponies упоминает , это исключения. Любая нереляционная «оптимизация» выгодна для одного типа запросов за счет других видов использования данных, поэтому убедитесь, что знаете, какие из ваших запросов нужно обрабатывать так специально, что они заслуживают денормализации.
* MySQL 8.0 больше не поддерживает этот синтаксис выражения слова-границы.
Поскольку класс в ответе @ William-Seemann больше не используется. Вот альтернатива (с тем, что она не требует каких-либо библиотек):
Добавьте следующий проект class в ваш проект. Теперь вы можете использовать его, как показано здесь здесь . Вы также можете использовать его следующим образом:
String title = "";
IcyStreamMeta meta = new IcyStreamMeta();
try {
meta.setStreamUrl(new URL(YOURURL));
title = meta.getStreamTitle();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Полный кредит для dazza5000 для создания проекта.
Я создал свой собственный класс для извлечения метаданных на основе модифицированной версии streamscraper . Используйте этот jar (streamscraper), этот jar (jsoup) и этот класс для извлечения метаданных. Интерфейс похож на MediaMetadataRetriever:
ShoutCastMetadataRetriever smr = new ShoutCastMetadataRetriever();
smr.setDataSource(<some url>);
String artist = smr.extractMetadata(ShoutCastMetadataRetriever.METADATA_KEY_ARTIST);
String title = smr.extractMetadata(ShoutCastMetadataRetriever.METADATA_KEY_TITLE);
Я не верю, что метаданные SHOUTcast поддерживают обложку альбома, поэтому вы не сможете ее восстановить.
artist - title
. SHOUTcast v2 предоставляет обложку альбома, если она доступна в кодере.
– Brad
11 May 2013 в 15:28