2016-04-06 12 views
1

i Wert ersetzen möchte wie:mysql Zahlenwert von ausgewählten ersetzen, um eine andere Zeichenfolge

1106,1107,1108 

von Auswahlabfrage in einen String Link wie:

http://something.com/img/1/1/0/6/1106.jpg,http://something.com/img/1/1/0/7/1107.jpg,http://something.com/img/1/1/0/8/1108.jpg 

kann es in mysql Abfrage durchgeführt werden ?

+0

Sehen Sie sich MySQL REPLACE an (http://www.w3resource.com/mysql/string-functions/mysql-replace-function.phphttp://www.w3resource.com/mysql/string-functions/ mysql-replace-function.php) – Stuart

Antwort

0

Vorausgesetzt, die Bildnamen haben variable Länge, ich denke, Sie müssen eine gespeicherte Funktion schreiben, um dies nativ in MySQL zu implementieren, gibt es keine offensichtliche integrierte Funktion. Das folgende Beispiel nimmt 1106 und konvertiert es in http://something.com/img/1/1/0/6/1106.jpg. Um mehrere Bild-IDs wie zu parsen, müssten Sie sie erweitern, um den Pfad jedes Mal neu einzufügen, wenn ein Komma gefunden wird, oder (besser) die Ergebnisse aus der Datenbank auf eine Weise auszuwählen, die nicht durch Kommas getrennt ist.

DELIMITER // 
CREATE FUNCTION TO_IMAGE_PATH(id VARCHAR(255), path VARCHAR(255)) 
RETURNS VARCHAR(255) DETERMINISTIC NO SQL 
BEGIN 
    DECLARE output VARCHAR(255) DEFAULT path; 
    DECLARE position INT DEFAULT 1; 
    WHILE position <= LENGTH(id) DO 
     SET output = CONCAT(output, SUBSTRING(id, position, 1), '/'); 
     SET position = position + 1; 
    END WHILE; 
    SET output = CONCAT(output, id, '.jpg'); 
    RETURN output; 
END// 
DELIMITER ; 

SELECT TO_IMAGE_PATH('1106', 'http://something.com/img/'); 
-- Output: http://something.com/img/1/1/0/6/1106.jpg 

Sie könnten es vorziehen, der anfängliche Pfad in der jpg Erweiterung oder schwer Code zu übergeben.

Während dies funktioniert, scheint dies ein Beispiel für ein Problem zu sein, das besser in einer anderen Programmiersprache gelöst werden kann, nachdem Sie Ihre Ergebnisse ausgewählt haben.

Wenn alle der Bild IDs sind genau 4 Ziffern lang, können Sie die einfachere tun (aber weniger elegant)

SELECT CONCAT(
    'http://something.com/img/', 
    SUBSTRING(field_name, 1, 1), '/', 
    SUBSTRING(field_name, 2, 1), '/', 
    SUBSTRING(field_name, 3, 1), '/', 
    SUBSTRING(field_name, 4, 1), '/', 
    field_name, '.jpg'); 

Auch hier müssen Sie zu erarbeiten, wie die Werte wählen aus also sind sie nicht durch Kommata getrennt. Wenn Sie Werte in der Datenbank durch Komma getrennt gespeichert haben, dann you shouldn't be.

+0

wow. Ich habe den Funktionspfad benutzt! es wirkt wie ein Zauber! Danke Matt !! – yongcc

Verwandte Themen