У меня есть таблица SQL с генетической информацией (имя гена, функция, цепь ...)
Я хочу получить количество хромосом (21, так как я работаю с человеческим геномом). Проблема в том, что некоторые хромосомы «повторяются». Например:
SELECT DISTINCT chrom FROM table LIMIT 6;
chr1
chr10
chr10_GL383545v1_alt
chr10_GL383546v1_alt
chr11
chr11_JH159136v1_alt
Как видите, у меня более одного chr10, поэтому, если я посчитаю DISTINCT
хромосомы, я получу около 6000.
Я пытался использовать NOT LIKE "_"
, но не сработало. Я думал, что смогу «форсировать» результат с помощью LIKE "chr1"
и так далее, но я чувствую, что меня обманывают, и это не совсем то, что я ищу. Я хотел бы, чтобы избежать каждого "_", но работает
SELECT COUNT(DISTINCT chrom) NOT LIKE "_" FROM table;
возвращает мне только 1 результат ...
LEFT
тоже не оптимально, потому что мне нужно было бы указать длину строки, и я хочу систему, которую я мог бы использовать, ничего не зная об ожидаемом результате. Так что запуск LEFT "", 4
и LEFT "", 5
- это не то, что я ищу.
Есть ли способ, которым я могу сосчитать все, что не содержит определенный характер? Есть лучшая стратегия?
Большое спасибо!