Einzelnen Beitrag anzeigen
  #38  
Alt 26.11.2010, 09:58:14
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Spalte prüfen.

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
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten