Ich hab's mal mit einer STORED FUNCTION probiert. Hier ein kleiner Test dazu:
Code:
CREATE TABLE test_string (
id INT NOT NULL,
csv_daten VARCHAR(100)
);
INSERT INTO test_string VALUES
( 1, '1234;12345;12456;1234567;12345678'),
( 2, '1234;12345;12456;1234567;12345678;'),
( 3, '1234;12345;12456;1234567;1;2345678;');
DELIMITER $$
CREATE FUNCTION count_substring(p_sVar VARCHAR(100), p_sSep VARCHAR(10) )
RETURNS INT
LANGUAGE SQL
BEGIN
DECLARE v_i INT;
DECLARE v_length INT;
DECLARE v_count INT;
SET v_length := LENGTH(p_sVar);
SET v_i := 1;
SET v_count := 0;
WHILE (v_i <= v_length) DO
IF SUBSTRING(p_sVar,v_i,1) = p_sSep THEN
SET v_count := v_count +1;
END IF;
SET v_i := v_i +1;
END WHILE;
RETURN v_count;
END$$
DELIMITER ;
SELECT id, count_substring(csv_daten,';') AS anzahl_sep from test_string
where count_substring(csv_daten,';') > 3
order by id;
+----+------------+
| id | anzahl_sep |
+----+------------+
| 1 | 4 |
| 2 | 5 |
| 3 | 6 |
+----+------------+
3 rows in set (0.00 sec)
mysql>
Grüße
Thomas