Как удалить указатель на класс без виртуальных функций и без наследования

вам нужно использовать FIND_IN_SET()

SELECT column1 FROM table WHERE FIND_IN_SET('3', column2);

Fiddle Demo

Вы никогда не должны хранить данные внутри таблицы в виде списка, разделенного запятыми. .. так что если бы я был вами, я бы подумал о том, чтобы разделить его на строки

, чтобы нормализовать вашу базу данных, вы можете сделать такой запрос ... ПРИМЕЧАНИЕ. Вам нужно знать количество штук, которые у вас есть в столбце2.

CREATE TEMPORARY TABLE IF NOT EXISTS normalized_table AS 
(   SELECT
      column1,
      SUBSTRING_INDEX(SUBSTRING_INDEX(column2, ',', n.digit+1), ',', -1) column2
    FROM test
    JOIN(SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) n
        ON LENGTH(REPLACE(column2, ',' , '')) <= LENGTH(column2)-n.digit
    ORDER BY column1, n.digit
);

DROP table test;
CREATE table test (column1 varchar(2), column2 varchar(2));
INSERT INTO test (column1, column2) 
SELECT column1, column2 FROM normalized_table;

НОРМАЛИЗОВАННЫЕ РЕЗУЛЬТАТЫ

JOIN с каждой цифрой - это ваш ключ ... если у вас есть 6 элементов, разделенных запятой, то объединение 0-5 цифр чтобы присоединиться.

, если вы не знаете, сколько есть, тогда просто запустите это, чтобы узнать, сколько чисел для объединения

SELECT MAX(LENGTH(REPLACE(column2, ',', ''))) FROM test;

-1
задан Alon Lanyado 16 January 2019 в 14:46
поделиться