Sql 在选择框中插入带有子字符串的数据

Sql 在选择框中插入带有子字符串的数据,sql,sql-server,substring,Sql,Sql Server,Substring,如何在选择中插入带有子字符串的数据 我尝试了以下方法,但无效: 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 我做错了什么?看起来您正在选择五列,并试图插入另

如何在
选择中插入带有
子字符串的
数据

我尝试了以下方法,但无效:

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

我做错了什么?

看起来您正在选择五列,并试图插入另一个表中的三列。确保行数匹配。您可能正在尝试将子字符串与空字符串连接起来,这需要使用CONCAT函数。

您似乎正在选择五列并尝试插入另一个表中的三列。确保行数匹配。您可能试图用空字符串连接子字符串,这需要使用CONCAT函数。

您可以执行以下操作:

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 
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

但是,首先需要删除像“”这样的空白,这会给INSERT语句留下这样的印象,即SELECT上的列比INSERT上的列多,我确实使用了CTE,只是为了使代码可读

您可以执行以下操作:

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

但是首先需要删除像“”这样的空白,这会给INSERT语句留下这样的印象,即SELECT上的列比INSERT上的列多,我确实使用了CTE,只是为了使代码可读。

SQL与其他语言不同。当计算一个字符串时,计数不是从零开始,就像python和其他类似语言一样,它从1开始。我注意到,在substring()函数中,您将起始值插入为0。这在某些语言中是正确的,但在SQL中,第一个字符是1而不是零。另外,在最后一个子字符串之后,请确保从原始select语句中关闭()。您在select之后、ID_CLI列之前打开了(),但没有在语句末尾提供结束()。无论如何,我都不是这门语言的专业人士,但我希望我的意见能对您的工作有所帮助。我相信这可能行得通,如果不行的话,我可能会遗漏一些东西(同样,我是SQL的新手,如果这不正确,请原谅我)


SQL不像其他语言。当计算一个字符串时,计数不是从零开始,就像python和其他类似语言一样,它从1开始。我注意到,在substring()函数中,您将起始值插入为0。这在某些语言中是正确的,但在SQL中,第一个字符是1而不是零。另外,在最后一个子字符串之后,请确保从原始select语句中关闭()。您在select之后、ID_CLI列之前打开了(),但没有在语句末尾提供结束()。无论如何,我都不是这门语言的专业人士,但我希望我的意见能对您的工作有所帮助。我相信这可能行得通,如果不行的话,我可能会遗漏一些东西(同样,我是SQL的新手,如果这不正确,请原谅我)


你应该把键盘换了。它似乎被锁上的盖子卡住了。现在不要对我们大喊大叫了!!!请避免使用所有大写。select语句有5列,insert有3列。您收到的错误消息是什么?您应该更换键盘。它似乎被锁上的盖子卡住了。现在不要对我们大喊大叫了!!!请不要使用所有大写。select语句有5列,insert有3列。您收到的错误消息是什么?