substring_index() を機能させることができないようです:
次のように簡単なテーブルを作成しました。
CREATE TABLE ContactList(
cont_id int(11) NOT NULL AUTO_INCREMENT,
last_name varchar(30),
first_name varchar(20),
interests varchar(100),
PRIMARY KEY(cont_id));
次に、次のように ContactList テーブルにデータを入力しました。
INSERT INTO ContactList (last_name, first_name, interests)
VALUES
('Murphy', 'Dave', 'Golf, Pets, Basketball'),
('Murphy', 'Ben', 'Pets, Gym, Basketball'),
('Finn', 'Belinda', 'Pets, Tennis, Knitting'),
('Murphy', 'Steve', 'Pets, Archery, Fishing');
データが正しく入力されていることを確認するために、簡単な SELECT を実行しました。
SELECT * FROM ContactList;
次に、次のクエリを実行しました。
SELECT * FROM ContactList
WHERE last_name = 'Murphy'
AND SUBSTRING_INDEX(interests, ',' ,1) = 'Pets';
2 つのレコードが返されることを期待していました (これは Ben と Steve に対して行いました)。しかし、'Interests' 列については、'pets' と等しい場合 (substring_index により) 1 つの利息のみが返されるはずであると想定していましたが、私はすべての興味を取り戻しました。SUBSTRING_INDEX() を使用してクエリを実行し、「ペット」と表示されている場合、各レコードの最初の興味のみを取得するにはどうすればよいですか?
ところで、私は MySQL バージョン 5.5.24 を使用しており、Interests が独自のテーブルに最適であることを知っています。「ペット」に等しい場合、substring_index がリストから最初の項目を選択しない理由を知りたいだけです。
ご意見ありがとうございます。
アンディ R ;-)