Sql 插入到。。。从表中选择列。。。。加入诱惑
如你所见,我是新来的。对SQL Server来说也是新的。我已经使用SSMS两周了。所以我每天都在学习,都有新的问题。这个问题似乎不是什么大问题;然而,我不能处理它 我有一个字符串: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
' 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