2017-10-05 6 views
0

Ich habe eine Tabelle, die aus 5000 Zeilen besteht. Ich brauche einen SQL-Befehl, der jede Zeile aktualisieren kann, indem alle Werte in "(...)" entfernt werden, wenn nur ein Paar von() gefunden wird.MysQL Update, wenn eine count-Bedingung erfüllt ist

Grundsätzlich, wenn ich einen Namen in einer Reihe:
Vorname Nachname (extra info)
I need "(extra info)" zu entfernen und nur
Namen hinterlassen Name Aber wenn es kein zusätzliches Paar von()

Wenn es eine Reihe Name Vorname (Daten) (extra info) ist

Das Skript sollte nicht ein flicken diesen Namen

In einfachen Worten, ich brauche einen Namen zu aktualisieren, bei denen nur eine (oder) Symbol

Vielen Dank

+0

'WHERE name NOT LIKE‚% (%)% (%)%, wie zu tun 'wird Zeilen überspringen, die mehrere haben' (...) ' – Barmar

Antwort

0

können Sie versuchen, zuerst zu finden ‚(‘ und Teilzeichenfolge darauf?

nicht vergessen Fall für keine zu verwenden (in string

update userlogin 
set fullname = case position('(' in FullName) 
when 0 
then fullname 
else substring(Fullname,1,position('(' in FullName) - 1) 
end 
0

Dies ist eine Umsetzung meiner Frage. Ich benutzte wählen, um mir das Ergebnis überprüfen zu lassen, bevor sie Anfrage zu aktualisieren anwenden. Das Skript zeigt eine Tabelle von 3 Spalten: ID, Name, UpdatedName, wobei Name ist das, was wir haben und UpdatedName was wir

SELECT `Id`,`Name`, 
    (case when ((LENGTH(`Name`)-LENGTH(REPLACE(`Name`, '(', ''))) = 1) 
    THEN 
      SUBSTRING_INDEX(`Name`, '(', 1) 
    ELSE 
      '-' 
    END) 
    as updated_name, 
    FROM table 
    WHERE (LENGTH(`Name`)-LENGTH(REPLACE(`Name`, '(', ''))) = 1 
    LIMIT 0,1500 

PS ich benutzte Id mir Werte zu ermöglichen, erhalten zu ändern

0
SELECT CASE 
    WHEN fname = 'correct' THEN 'your condition' 
    WHEN sname = 'correct' THEN 'your second condition' 
    ELSE 'baz' 
END AS fullname 
FROM `databasetable` 

oder Sie können wie auch

CASE 
    WHEN action = 'update' THEN 
     UPDATE sometable SET column = value WHERE condition; 
    WHEN action = 'create' THEN 
     INSERT INTO sometable (column) VALUES (value); 
END CASE 
Verwandte Themen