/ / Внутрішнє об'єднання ігнорує однакові значення, які мають верхній регістр в одному списку, а нижній регістр в іншому - sql, postgresql, join

Внутрішній зв'язок ігнорує ідентичні значення, які мають верхній регістр у одному списку, а нижні - в іншому - sql, postgresql, join

У PostgreSQL - при спробі наступноговнутрішній приєднання - я зрозумів, що деякі записи, які, мабуть, збігаються - не зможуть (!) Коли я порівнював два мої списки, я виявив, що ті, хто не вдався, містять суміш цифр і малих регістрів в одному списку, в той час як вони були представлені як числа та великі регістри в іншому списку. Зокрема, такі значення, як C6orf70 та C9orf156, з'явилися в одному списку в цьому форматі, тоді як в іншому списку були у такому форматі: C6ORF70 та C9ORF156 В результаті внутрішнє з'єднання ігнорує всі подібні випадки і не проводить жодної відповідності. Чи знаєте ви, як я можу сказати моєму внутрішньому приєднанню ігнорувати випадки відповідності під час приєднання двох списків? ... Я не мав жодних проблем із внутрішнім приєднанням "нормальних" генів, таких як: HSP6, POLL тощо. Вони були у верхньому регістрі обох списків. Дуже дякую!

виберіть t1. *, bvi_d_exp, bvi_r_exp, bvi_exp.bvi_lr_rvd в Patient_bvi_p_exp з (виберіть гени split_part (id4, "@", 3), * від pati_bvi_p) t1 внутрішнє з'єднання (виберіть ім'я гена, bvi_d_exp, bvi_r_exp, bvi_lr_rvd від geneexpression17p) bvi_exp на t1.genes = bvi_exp.genename

Відповіді:

0 для відповіді № 1

спробуйте це

select t1.* ,bvi_d_exp,bvi_r_exp,bvi_exp.bvi_lr_rvd
into Patient_bvi_p_exp
from
(select *, LOWER(split_part(id4, "@", 3) ) genes
from patient_bvi_p) t1
inner join
(select LOWER(genename),bvi_d_exp,bvi_r_exp,bvi_lr_rvd
from geneexpression17p) bvi_exp
on t1.genes=bvi_exp.genename

або це

select t1.* ,bvi_d_exp,bvi_r_exp,bvi_exp.bvi_lr_rvd
into Patient_bvi_p_exp
from
(select *, split_part(id4, "@", 3)genes
from patient_bvi_p) t1
inner join
(select genename,bvi_d_exp,bvi_r_exp,bvi_lr_rvd
from geneexpression17p) bvi_exp
on LOWER(t1.genes)=LOWER(bvi_exp.genename)

0 для відповіді № 2

Якщо ти кидаєш t1.genes і bvi_exp.genename як нижчий регістр під час вашого приєднання, ви повинні бути добре:

select t1.* ,bvi_d_exp,bvi_r_exp,bvi_exp.bvi_lr_rvd
into Patient_bvi_p_exp
from
(select split_part(id4, "@", 3)genes,*
from patient_bvi_p) t1
inner join
(select genename,bvi_d_exp,bvi_r_exp,bvi_lr_rvd
from geneexpression17p) bvi_exp
on lower(t1.genes)=lower(bvi_exp.genename)