Verwendung von SQL CONCAT/SUBSTR?
Ich versuche, erstellen Sie einen Benutzernamen für jede person in der marketing-Tabelle.
Ich möchte eine update-Anweisung, fügt der neue username in der username-Spalte.
Möchte ich den ersten Buchstaben des Vornamens, sich in den ersten 5 Buchstaben des Nachnamens, und speichern Sie diese in der username-Spalte des marketing Tabelle. Ich brauche, um diese innerhalb einer Prozedur irgendwie zu.
heres mein code:
SELECT CONCAT(m.firstname, 1)||SUBSTR(m.surname, 5)
INTO username
FROM marketing
WHERE marketing_id = 10001;
Allerdings bin ich immer Fehler, ich kann nicht scheinen, um zu lösen, wie Vorname und Nachname sind ungültige Bezeichner. Jede Hilfe ist hier willkommen.
Was tun Sie, wenn Sie Benutzer
Paul Jones
und Peter Jones
?InformationsquelleAutor ChantelleL | 2015-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update table_name ist der korrekte.... schauen Sie sich jetzt Mähe ich meine Antwort bearbeitet
es funktioniert nicht, immer noch fehlende expression UPDATE username SET username = " SELECT CONCAT(LEFT(Vorname,1),LEFT(name,5)) AUS marketing, WO marketing_id = 10001;
versuchen Sie obige Abfrage, die aktualisiert wurde. In früheren pranthesis fehlt und einige, wo cond ' N...sorry
Sowie der falschen Tabelle Namen, Sie haben ein zusätzliches Semikolon in der Unterabfrage, die Sie nicht brauchen, eine Unterabfrage, wenn es die Aktualisierung der gleichen Tabelle, aber was wichtiger ist Oracle nicht
left()
Funktion.InformationsquelleAutor koushik veldanda
Sie scheinen verwirrend sein, die
concat
Funktionsubstr
Funktion und die concatentation operator (||
). Sie sind nicht mitsubstr
um das erste Zeichen des ersten namens, und einschränken der Länge der beiden müssen Sie sowohl die Start-position und die substring-Länge.Bist du auch auf
m.firstname
ohne Definitionm
als alias für die Tabelle name; ein alias ist nicht wirklich nötig, hier wie dort ist nur eine Tabelle, aber wenn Sie es verwenden, verwenden Sie es konsequent.Den ersten Buchstaben des Vornamens und den ersten fünf Buchstaben des Nachnamens, die Sie nutzen könnten:
oder
Wenn Sie ein Update einer Spalte in der gleichen Tabelle, aber, anstatt mit einem PL/SQL -
into
- Klausel, müssen Sie ein update nicht auswählen:SQL Fiddle demo.
Ich versuche diese in eine Prozedur, aber ich bin jetzt immer Fehler, wenn ich versuche, es auszuführen, sagen: ungültige SQL-Anweisung, irgendwelche Ratschläge? CREATE or REPLACE PROCEDURE proc_create_username(vn_marketing_id marketing.marketing_id%TYPE) IS BEGIN UPDATE marketing SET username = SUBSTR(Vorname, 1, 1) || SUBSTR(Nachname, 1, 5), WO marketing_id = vn_marketing_id; END proc_create_username; / AUSFÜHREN proc_create_username(10002); '
das ist gültig, wenn es formatiert ist Recht, und wenn Ihr client ist, dass Sie die Ausführung mehrerer Anweisungen. Sind Sie mit diesen beiden Befehlen als einzige Erklärung, getrennte Erklärungen oder so ein Skript? Ist die Prozedur erstellt wird? Welchen client benutzt du - ist es zu verstehen
execute
?dies ist in der Tat eine vollständige Antwort. Sollten Sie markieren es als beantwortet.
Die Prozedur erstellt wird, aber wenn ich die Ausführung der Anweisung, ich bekomme die Meldung:ORA-00900: ungültige SQL-Anweisung
InformationsquelleAutor Alex Poole
Den
m
imm.name
muss definiert wurden, fehlt.CONCAT
(MySQL?) sollten verbrauchen strings, übergeben Sie eine Zahl (1
) zusätzlich zu einem string. Ihre Beschreibung erwähnt zwei Teilfolgen, die Aussage hat nur einen, gemessen durch Fundstellen inSUBSTR
. Der operator, wenn Sie unterstützt von Ihrem SQL-Dialekt, wird dann nicht sehen, was Sie beabsichtigte, es zu sehen (zweiSUBSTR
ings).InformationsquelleAutor B98