如何拆分多个字符串并插入SQL Server FN_SplitStr

埃维克·加扎里安(Evik Ghazarian)

我有2个字符串和一个整数:

@categoryID int = 163,
@Ids nvarchar(2000) = '1,2,3',
@Names nvarchar(2000) = 'Bob,Joe,Alex'

我需要选择3列3行;最成就的是3行2列:

select @categoryID,items from FN_SplitStr(@Ids,',')

结果:

163,1
163,2
163,3

但是我不知道如何拆分两个字符串。

我尝试了很多方法,例如:

select @categoryID,items from FN_SplitStr((@Ids,@Names),',')
select @categoryID,items from FN_SplitStr(@Ids,','),items from FN_SplitStr(@Names,',')

预期的输出:

163,1,Bob
163,2,Joe
163,3,Alex

注意1:我查看了数十个最相似的问题:如何在SQL ServerSQL Server中拆分字符串并将值插入表:将多个字符串分别拆分为一行,但是这个问题有所不同。

注意2: FN_SplitStr是用于在SQL中拆分字符串的函数。而且我正在尝试创建一个存储过程。

阿维

根据您的预期输出,您必须使用交叉应用两次,然后创建某种排名,以确保获得正确的价值。由于ID和名称似乎没有任何关系,因此交叉应用会创建多行(将字符串拆分为名称和ID时)

可能有更好的方法,但这也可以提供预期的输出。您可以将此字符串拆分更改为本地函数。

第一个密集等级是为了确保我们得到三个唯一的名称,第二个密集等级是名称内基于ID的顺序的等级,在子查询之外,您必须进行一些比较才能只获得3行。

Declare @categoryID int = 163,
@Ids nvarchar(2000) = '1,2,3',
@Names nvarchar(2000) = 'Bob,Joe,Alex' 

select ConcatenatedValue, CategoryID, IDs, Names from (
select    concat(@categoryID,',',a.value,',',b.value) ConcatenatedValue, @categoryID CategoryID, 
A.value as IDs, b.value  as Names , DENSE_RANK() over (order by b.value) as Rn, 
DENSE_RANK() over (partition by b.value order by a.value) as Ranked  
from  string_split(@IDs,',') a 
cross apply string_split(@names,',') B ) t
where Rn - Ranked = 0 

输出:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SQL Server中拆分字符串并将值插入表中

来自分类Dev

如何在SQL Server中的字符串中获取最后一个字符

来自分类Dev

如何在SQL Server中自动连接三个字符串的前两个字符

来自分类Dev

在SQL Server中的字符串的每个字符后附加一个特定字符

来自分类Dev

SQL Server列的默认随机10个字符串值

来自分类Dev

从SQL Server中的字符串中删除大写字母(至少2个字符)

来自分类Dev

获取名称SQL Server中具有多个字符串的行

来自分类Dev

返回两个字符串的差异SQL Server 2008

来自分类Dev

SQL Server 2012:在单个列中返回多个字符串以获取公共行ID

来自分类Dev

如何在SQL Server中的字符串中获取最后一个字符

来自分类Dev

SQL Server:如何根据下一个字符从字符串替换

来自分类Dev

SQL Server结果转换为带有计数器的单个字符串

来自分类Dev

如何在SQL Server中自动连接三个字符串的前两个字符

来自分类Dev

从SQL Server中的另一个字符串获取仅字符字符串

来自分类Dev

如何在SQL Server 2012中拆分字符串?

来自分类Dev

从SQL Server中的字符串中删除大写字母(至少2个字符)

来自分类Dev

在SQL Server中,单数逗号将字符串分隔成IN子句的多个字符串

来自分类Dev

如何在SQL Server中将字符串拆分为多个

来自分类Dev

如何在SQL Server的两个varchar字符串之间找到一个字符串?

来自分类Dev

SQL SERVER 从某个字符之后选择字符串

来自分类Dev

如何在 SQL Server 中为 2 个字符串使用 DATEDIFF?

来自分类Dev

在 SQL Server 中拆分字符串

来自分类Dev

如何将字符串拆分并插入到 SQL Server 表中?

来自分类Dev

SQL Server:获取表中每个字符串的出现

来自分类Dev

SQL Server 2014 将多个字符串行更改为列

来自分类Dev

sql-server 2008 r2 连接两个字符串

来自分类Dev

SQL Server 替代拆分字符串

来自分类Dev

如何在 SQL Server 中拆分字符串?

来自分类Dev

MS SQL Server 上是否有用于动态列表或多个字符串集的 LIKE 运算符?

Related 相关文章

  1. 1

    如何在SQL Server中拆分字符串并将值插入表中

  2. 2

    如何在SQL Server中的字符串中获取最后一个字符

  3. 3

    如何在SQL Server中自动连接三个字符串的前两个字符

  4. 4

    在SQL Server中的字符串的每个字符后附加一个特定字符

  5. 5

    SQL Server列的默认随机10个字符串值

  6. 6

    从SQL Server中的字符串中删除大写字母(至少2个字符)

  7. 7

    获取名称SQL Server中具有多个字符串的行

  8. 8

    返回两个字符串的差异SQL Server 2008

  9. 9

    SQL Server 2012:在单个列中返回多个字符串以获取公共行ID

  10. 10

    如何在SQL Server中的字符串中获取最后一个字符

  11. 11

    SQL Server:如何根据下一个字符从字符串替换

  12. 12

    SQL Server结果转换为带有计数器的单个字符串

  13. 13

    如何在SQL Server中自动连接三个字符串的前两个字符

  14. 14

    从SQL Server中的另一个字符串获取仅字符字符串

  15. 15

    如何在SQL Server 2012中拆分字符串?

  16. 16

    从SQL Server中的字符串中删除大写字母(至少2个字符)

  17. 17

    在SQL Server中,单数逗号将字符串分隔成IN子句的多个字符串

  18. 18

    如何在SQL Server中将字符串拆分为多个

  19. 19

    如何在SQL Server的两个varchar字符串之间找到一个字符串?

  20. 20

    SQL SERVER 从某个字符之后选择字符串

  21. 21

    如何在 SQL Server 中为 2 个字符串使用 DATEDIFF?

  22. 22

    在 SQL Server 中拆分字符串

  23. 23

    如何将字符串拆分并插入到 SQL Server 表中?

  24. 24

    SQL Server:获取表中每个字符串的出现

  25. 25

    SQL Server 2014 将多个字符串行更改为列

  26. 26

    sql-server 2008 r2 连接两个字符串

  27. 27

    SQL Server 替代拆分字符串

  28. 28

    如何在 SQL Server 中拆分字符串?

  29. 29

    MS SQL Server 上是否有用于动态列表或多个字符串集的 LIKE 运算符?

热门标签

归档