2016-04-04 6 views
0

Wie kann ich INSERT Daten mit einer SUBSTRING in der SELECT?Einfügen von Daten mit einem SUBSTRING in der SELECT

habe ich versucht, die folgenden, aber es hat nicht funktioniert:

falsch
INSERT INTO PHONE( 
     ID_CLIENT, 
     COD, 
     PHONE) 
SELECT (ID_CLI, 
     SUBSTRING(PHONE,0,3), '', 
     SUBSTRING(PHONE,3,9), '') 
FROM [dbo].TABLE_1 
WHERE ID_PHONE = 2 

Was soll ich tun?

+1

Sie sollten Ihre Tastatur ersetzt haben. Es scheint mit CAPS LOCK ON stecken zu bleiben. Jetzt STOPPEN SIE SCHREIEN SIE AUF UNS !!! –

+0

Bitte verwenden Sie keine Großbuchstaben. – Siyual

+2

Ihre Select-Anweisung hat 5 Spalten und die Einfügung hat 3 – supergrady

Antwort

0

Es scheint, dass Sie fünf Spalten auswählen und versuchen, in drei Spalten in einer anderen Tabelle einzufügen. Stellen Sie sicher, dass die Anzahl der Zeilen übereinstimmt. Es scheint, dass Sie versuchen, die Teilzeichenfolgen mit leeren Zeichenfolgen zu verketten, für die Sie die CONCAT-Funktion verwenden müssten.

1
INSERT INTO PHONE(  
    ID_CLIENT,  
    COD,  
    PHONE) 
SELECT (ID_CLI,  
    SUBSTRING(PHONE,0,3),  
    SUBSTRING(PHONE,3,9)  
FROM [dbo].TABLE_1  
WHERE ID_PHONE = 2 
0

Sie können etwas tun:

WITH CteData 
AS 
(
SELECT ID_CLI,SUBSTRING(PHONE,0,3) AS COD,SUBSTRING(PHONE,3,9) AS PHONE 
FROM [dbo].TABLE_1 
WHERE ID_PHONE = 2 
) 
INSERT INTO PHONE(ID_CLIENT,COD,PHONE) 
SELECT CteData.ID_CLI,CteData.COD,CteData.PHONE FROM CteData 

aber zuerst müssen Sie den leeren Raum wie ‚‘, die den Eindruck für die INSERT-Anweisung erstellen entfernen, die Sie mehr Spalten auf der SELECT haben als die INSERT, ich habe CTE nur verwendet, um den Code lesbar zu machen

1

SQL ist nicht wie andere Sprachen. Beim Zählen einer Zeichenfolge beginnt die Zählung nicht bei Null, wie Python und andere ähnliche Sprachen. Sie beginnt bei 1. Ich habe festgestellt, dass Sie in Ihrer Funktion substring() den Anfangswert als 0 eingefügt haben. In einigen Sprachen wäre dies korrekt , aber in SQL ist das erste Zeichen 1 nicht Null. Stellen Sie nach der letzten Teilzeichenfolge sicher, dass Sie Ihr() von der ursprünglichen SELECT-Anweisung schließen. Sie öffneten() nach der Auswahl vor der ID_CLI-Spalte, stellten jedoch am Ende der Anweisung kein closing() bereit. Ich bin kein Profi mit dieser Sprache, aber ich hoffe, dass mein Beitrag hilfreich ist für das, was Sie versuchen zu tun. Ich glaube, dass dies funktionieren kann, wenn es nicht etwas sein kann, mir fehlt, (wieder, ich bin ein Anfänger mit SQL, so vergib mir, wenn dies nicht korrekt ist)

INSERT INTO PHONE(  
    ID_CLIENT,  
    COD,  
    PHONE) 
SELECT (ID_CLI,  
    SUBSTRING(PHONE,1,4),  
    SUBSTRING(PHONE,4,10))  
FROM [dbo].TABLE_1  
WHERE ID_PHONE = 2