Wenn Du auch am Ende ein ; (hinter die letzte Zahl) schreibst, könnte der REGEX so aussehen.
Code:
DELETE FROM test_string;
INSERT INTO test_string VALUES
( 1, '1234;12345;12456;1234567;12345678;'),
( 2, '1234;12345;12456;1234567;12345678;'),
( 3, '1234;12345;12456;1234567;1;2345678;'),
( 4, '123456;123456;123456;123456;234567;');
/* korrekte Daten */
SELECT * FROM test_string
WHERE csv_daten REGEXP '^([0-9]{6};){1,}$';
+----+-------------------------------------+
| id | csv_daten |
+----+-------------------------------------+
| 4 | 123456;123456;123456;123456;234567; |
+----+-------------------------------------+
1 row in set (0.00 sec)
/* falsche Daten */
SELECT * FROM test_string
WHERE id NOT IN (
SELECT id FROM test_string
WHERE csv_daten REGEXP '^([0-9]{6};){1,}$'
);
+----+-------------------------------------+
| id | csv_daten |
+----+-------------------------------------+
| 1 | 1234;12345;12456;1234567;12345678; |
| 2 | 1234;12345;12456;1234567;12345678; |
| 3 | 1234;12345;12456;1234567;1;2345678; |
+----+-------------------------------------+
3 rows in set (0.00 sec)
Wäre aus meiner Sicht korrekt. Wie der REGEX umgestellt werden muss, damit es auch ohne das letzte angehängte ; geht ..(keine Ahnung). Vielleicht kennt @rei eine Lösung dafür.
Grüße
Thomas