Einzelnen Beitrag anzeigen
  #4  
Alt 21.11.2010, 19:30:24
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Spalte prüfen.

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