Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 插入到。。。从表中选择列。。。。加入诱惑_Sql_Sql Server_Join_Select_Sql Insert - Fatal编程技术网

Sql 插入到。。。从表中选择列。。。。加入诱惑

Sql 插入到。。。从表中选择列。。。。加入诱惑,sql,sql-server,join,select,sql-insert,Sql,Sql Server,Join,Select,Sql Insert,如你所见,我是新来的。对SQL Server来说也是新的。我已经使用SSMS两周了。所以我每天都在学习,都有新的问题。这个问题似乎不是什么大问题;然而,我不能处理它 我有一个字符串: ' texttype;commment|texttype2;comment2' 我必须将其拆分并放入列注释中,作为现有表列中的新插入项。我已经使用了SPLIT函数,该函数以诱人的方式生成: 然后,我使用substring和charindex在Detritable2中实现了这一点: types

如你所见,我是新来的。对SQL Server来说也是新的。我已经使用SSMS两周了。所以我每天都在学习,都有新的问题。这个问题似乎不是什么大问题;然而,我不能处理它

我有一个字符串:

' texttype;commment|texttype2;comment2'
我必须将其拆分并放入列注释中,作为现有表列中的新插入项。我已经使用了SPLIT函数,该函数以诱人的方式生成:

然后,我使用substring和charindex在Detritable2中实现了这一点:

types                | commentary
---------------------+------------
texttype             | commment
texttype2            | comment2
我必须将此注释和注释2插入此表中的特定现有表中

我的问题是:如何做到这一点?使用什么样的连接?ofc目标表有两列以上。不知道如何从Testable2定义此插入/连接

目标表类似于:

ID | ID_Jobs | Column for comments | Column for types | A few more columns
我希望一切都好


感谢您提供的任何帮助

您肯定需要修改此选项以适应您的情况,例如表名、额外列等,但我认为这正是您需要的

CREATE TABLE SourceTable
(
    MyString VARCHAR(50)
);

CREATE TABLE TargetTable
(
    TextType VARCHAR(25)
  , Comment VARCHAR(25)
);

INSERT INTO SourceTable
(
    MyString
)
VALUES
('texttype;commment|texttype2;comment2');

SELECT * FROM SourceTable

INSERT INTO TargetTable
(
    TextType
  , Comment
)
SELECT
            LEFT(value, CHARINDEX(';', value) - 1)           AS TextTypeColumn
          , RIGHT(value, LEN(value) - CHARINDEX(';', value)) AS CommentColumn
FROM        SourceTable
CROSS APPLY STRING_SPLIT(MyString, '|');

SELECT * FROM TargetTable;

对不起打扰了。。。已经开始工作了。。我犯了一个简单的错误,加入了同一个表,但问题没有解决。。也许这会对某人有所帮助,所以我在这里通过了完整的代码:

GO
ALTER PROCEDURE AddCommentToJobFromString (
        @ID_JOBS int, 
        @CommentString nvarchar(2000),
        @OPERACTIVE INT
        )
AS 
BEGIN
        IF OBJECT_ID('tempdb.dbo.#temp', 'U') IS NOT NULL
        DROP TABLE #temp;

SELECT * into #temp from dbo.Split(@CommentString , '|') as t1
SELECT 
        SUBSTRING(t.items, 1 , CHARINDEX(';',t.items)-1) as typuwag,
        SUBSTRING(t.items,  CHARINDEX(';',t.items)+1, LEN(t.items)) as trescuwagi
INTO #temp2 
FROM #temp t 

INSERT INTO Uwagi (ID_Jobs, Uwaga, ID_TypyUwag, ID_Operatorzy_Creator, ID_Operatorzy_Last, DateCreated, LastModified)
--DECLARE @OPERACTIVE INT = 4628
--DECLARE @ID_JOBS INT = 65141
Select  
        @ID_JOBS,
        t2.trescuwagi,  
        TU.ID,
        @OPERACTIVE,
        @OPERACTIVE,
        getdate(),
        getdate()
        --t2.typuwag




FROM TypyUwag TU
inner join #temp2 t2
ON TU.TypUwagi = t2.typuwag  COLLATE DATABASE_DEFAULT

END
GO
EXEC AddCommentToJobFromString @ID_JOBS = 65141, @CommentString ='qwe;Tech visual check|Kosztorys;Estimate not ready yet', @OPERACTIVE = 4628

欢迎来到这个网站。您能提供一个到目前为止您所拥有的最简单的代码示例吗?我在上面看到的更多的是对你的结果的评论,但我实际上没有看到任何源代码,除非我遗漏了什么。代码还是一团糟,我现在要睡觉了,我会尝试指定tommorow作为肯定,thx作为回复
GO
ALTER PROCEDURE AddCommentToJobFromString (
        @ID_JOBS int, 
        @CommentString nvarchar(2000),
        @OPERACTIVE INT
        )
AS 
BEGIN
        IF OBJECT_ID('tempdb.dbo.#temp', 'U') IS NOT NULL
        DROP TABLE #temp;

SELECT * into #temp from dbo.Split(@CommentString , '|') as t1
SELECT 
        SUBSTRING(t.items, 1 , CHARINDEX(';',t.items)-1) as typuwag,
        SUBSTRING(t.items,  CHARINDEX(';',t.items)+1, LEN(t.items)) as trescuwagi
INTO #temp2 
FROM #temp t 

INSERT INTO Uwagi (ID_Jobs, Uwaga, ID_TypyUwag, ID_Operatorzy_Creator, ID_Operatorzy_Last, DateCreated, LastModified)
--DECLARE @OPERACTIVE INT = 4628
--DECLARE @ID_JOBS INT = 65141
Select  
        @ID_JOBS,
        t2.trescuwagi,  
        TU.ID,
        @OPERACTIVE,
        @OPERACTIVE,
        getdate(),
        getdate()
        --t2.typuwag




FROM TypyUwag TU
inner join #temp2 t2
ON TU.TypUwagi = t2.typuwag  COLLATE DATABASE_DEFAULT

END
GO
EXEC AddCommentToJobFromString @ID_JOBS = 65141, @CommentString ='qwe;Tech visual check|Kosztorys;Estimate not ready yet', @OPERACTIVE = 4628