加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql server 合并字符串分割操作的结果并更新表

发布时间:2022-11-16 20:00:59 所属栏目:MsSql教程 来源:互联网
导读: Sql server 合并字符串分割操作的结果并更新表
sql-server
Sql server 合并字符串分割操作的结果并更新表,sql-server,split,resultset,Sql Server,Split,Resultset,我有一个有3列的表:col

Sql server 合并字符串分割操作的结果并更新表

sql-server

Sql server 合并字符串分割操作的结果并更新表,sql-server,split,resultset,Sql Server,Split,Resultset,我有一个有3列的表:col1,col2,col3。我需要在这个表中插入行,我的输入是3个参数,一个int参数和两个varchar参数,我需要拆分它们。比如说@param1 = 1@param2 = '2,3'@param3 = '4,5'要生成的行是1,2,41,3,5我试图用这样的代码接近期望的结果WITH group1 AS ( SELECT @param1 as col1, value as col2 from string_split(@param2,',

我有一个有3列的表:col1,col2,col3。我需要在这个表中插入行,我的输入是3个参数Mssq字符串函数,一个int参数和两个varchar参数,我需要拆分它们。比如说

@param1 = 1    
@param2 = '2,3'
@param3 = '4,5'

要生成的行是

1,2,4
1,3,5

我试图用这样的代码接近期望的结果

WITH group1 AS (
  SELECT @param1 as col1, value as col2 from string_split(@param2,',')
),
group2 AS (
  SELECT @param1 as col1, value as col3 from string_split(@param3,',') 
)
SELECT group1.col1, group1.col2, group2.col3
  FROM group1
  JOIN group2 ON group1.col1 = group2.col1 

但这并不完全是我想要的。

您需要一个拆分器,它返回每个子字符串和子字符串的位置。有时,基于JSON的方法可能会有所帮助。您需要将逗号分隔的字符串转换为有效的JSON数组(

2,3

转换为

[2,3]

),使用

OPENJSON()

解析数组,并使用适当的

JOIN

DECLARE @param1 int = 1    
DECLARE @param2 varchar(100) = '2,3,6,8'
DECLARE @param3 varchar(100) = '4,5,9,5'
-- INSERT INTO Table1 (Column1, Column2, Column3)
SELECT 
   @param1 AS Column1,
   j1.[value] AS Column2, 
   j2.[value] AS Column3
FROM OPENJSON (CONCAT('[', @param2, ']')) j1
FULL JOIN OPENJSON (CONCAT('[', @param3, ']')) j2 ON j1.[key] = j2.[key]

结果:

Column1 Column2 Column3
1       2       4
1       3       5
1       6       9
1       8       5

作为一个重要的注意事项(尽管

STRING_SPLIT()

将字符串拆分为行并返回一个表),如中所述,输出行可以是任意顺序,并且不能保证顺序与输入字符串中的子字符串的顺序匹配。

是否

@param2

@param3

始终有两个子字符串?否,它们可以有很多并且总是相等数量的子字符串,您使用的是哪个版本的sql server?哦,不,那么我不能在我的场景中使用字符串分割。是否有其他内置函数,如string_split,或者我必须创建自己的函数?@KonstantinosPapakonstantinou这里有许多关于如何拆分字符串的示例。是的,您需要使用现有的或创建自己的函数。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!