sql - 将分隔字符串拆分为 2 个值。SQL Server 2008。你能帮我吗?

标签 sql sql-server-2008

我将一个分隔字符串传递给由 empId|ProductId + 逗号作为分隔符组成的存储过程 目的是填充链接表。使用 SQL Server 2008

     EmployeeOrderLink  Table to be filled
     EmpId
     OrderId
     ProductId

可能的 key 示例

     MyKeyIds="EmpId|ProductId,
     EG 2232|33,4555|111,43343|65 etc...

如何循环遍历字符串,将其拆分并插入到表中,例如

   while MyKeyIds  ???
   Logic --PLEASE NOTE THAT EACH KEY IS COMPOSED BY 2 VALUES 
 AND SEPARATED BY THE COMMA.DELIMETER IS USED TO SEPARATE THE INNER VALUES OF THE KEY

         @myEmpID=--Get EmpId from split string
         @myProductId =Get productId from split string

         INSERT EmployeeOrderLinkend(EmpId,OrderId,ProductId)
         VALUES(@myEmpID,@OrderIdPassedAsParamInSP, @myProductId)
    END

关于如何拆分上述键并提取适当的值有什么建议吗? 非常感谢

最佳答案

Here是 SQL 中 split 函数的示例。另tutorial is this 。使用它我想我会执行以下操作以逗号分隔。然后,您还必须在 | 处添加要拆分的代码。

DECLARE @MyKeyIds NVARCHAR(40)
DECLARE @IDset NVARCHAR(40)
DECLARE @Pos INT
DECLARE @NextPos INT
DECLARE @Delimiter NVARCHAR(40)

SET @Delimiter = ','
Set @MyKeyIds='2232|33,4555|111,43343|65'+ @Delimiter 
SET @Pos = charindex(@Delimiter, @MyKeyIds)

WHILE (@pos <> 0)
BEGIN
    SET @IDset = substring(@MyKeyIds,1,@Pos - 1)
    SELECT @IDset -- Show Results
    SET @MyKeyIds = substring(@MyKeyIds,@Pos+1,len(@MyKeyIds))
    SET @Pos = charindex(@Delimiter,@MyKeyIds)
END 

关于sql - 将分隔字符串拆分为 2 个值。SQL Server 2008。你能帮我吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3198767/

相关文章:

sql-server - Sql Server 中非聚集索引计数的原因

sql - CTE 在 CASE EXIST 中返回错误值

mysql - 选择最后 x 行

SQL错误: ORA-00979: not a GROUP BY expression

sql-server-2008 - 在 Excel 中通过 ADODB.connection 连接到 SQL Server 2008 时出现错误 3709

xml - 如何从 XML 变量读取数据?

sql-server - 将日期时间转换为 UTC 值 mssql

mysql - 重命名sql中的选择列

c# - 更新和删除按钮 C#

c# - 在c#中使用linq执行存储过程