2015-08-05 2 views
0

У меня есть таблица Postgresql X с атрибутом names | character varying(255)[].SQL Attribute - это список - Доступ к одному элементу списка

Теперь names в одной записи может быть { 'mary' , 'james' , 'john' }. Как выполнить запрос, который будет что-то вдоль линий -

select names,other_attribute_1 from X where 'mary' in names ; 

мне нужно получить все (или некоторые атрибуты) из строки, где список имен имеет «Мэри».

+0

Что такое 'other_attribute_1'? – Matt

+0

Это может быть что угодно, только какой-то другой атрибут, соответствующий записи –

+0

Почему вы храните несколько значений в одном столбце? Вы должны прочитать о нормализации. –

ответ

0

Вы можете использовать LIKE оператор:

SELECT names, 
    other_attribute_1 
FROM x 
WHERE names LIKE '%mary%'; 
0

Просто используйте простой WHERE состояние.

SELECT names, other_attribute_1 
FROM x 
WHERE name = 'mary' 

Или, если она имеет различные варианты написания (на самом деле не распространяется на имя Марии, но Джон, например) используют IN.

SELECT names, other_attribute_1 
FROM x 
WHERE name in ('john', 'jon') 

Или, если это было апостроф или множественные, такие как Мэри или Мэрис использовать LIKE.

SELECT names, other_attribute_1 
FROM x 
WHERE name LIKE 'mary%' 
Смежные вопросы