mysql - T-Sql,在列中拆分字符串并插入表中

标签 mysql sql-server database tsql

<分区>

我有这样的 table

Name   |  Email             | Phone number 
alis     alis@123.com        +989355555;+989366666;+9803777777
John     john@yah.com        +989122222
sara     sara@yah.com        +989113212;+989113312

我想要一个查询来像这样选择这个表,然后将这个表插入到其他表中。

Name   |  Email             | Phone number 
alis     alis@123.com        +989355555
alis     alis@123.com        +989366666
alis     alis@123.com        +9803777777
John     john@yah.com        +989122222
sara     sara@yah.com        +989113212
sara     sara@yah.com        +989113312

拆分所有电话号码并使用相似的字段名称保存它们。

最佳答案

你可以试试这个(只使用T-SQL):

DECLARE @DataSource TABLE
(
    [Name] VARCHAR(12)
   ,[Email] VARCHAR(12)
   ,[PhoneNumber] VARCHAR(1024)
);

INSERT INTO @DataSource ([Name], [Email], [PhoneNumber])
VALUES ('alis', 'alis@123.com', '+989355555;+989366666;+9803777777')
      ,('John', 'john@yah.com', '+989122222')
      ,('sara', 'sara@yah.com', '+989113212;+989113312');

SELECT DS1.[Name]
      ,DS1.[Email]
      ,DS3.[value]
FROM @DataSource DS1
CROSS APPLY
(
    SELECT CAST(('<X>'+REPLACE(DS1.[PhoneNumber] ,';' ,'</X><X>')+'</X>') AS XML)
) DS2 ([Col])
CROSS APPLY
(
    SELECT T.C.value('.', 'varchar(32)') as value 
    FROM DS2.Col.nodes('X') as T(C)
) DS3 ([value]);

enter image description here

关于mysql - T-Sql,在列中拆分字符串并插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093525/

相关文章:

mysql - 数据库 :schema:load vs db:migrate with capistrano

sql-server - sqlconnection不支持并行事务

php - 数据未插入数据库

mysql计算列中唯一id的数量

mysql - 将两个表与一个相同的列值连接在一起,不会丢失任何记录

mysql - 提高查询速度 : simple SELECT from SELECT in huge table

mysql - 如何将来自多行的数据聚合到分布在多列中的单个数据中?

sql - 堆叠两个具有不同列名的sql表(2008)

php - 数据库连接如何在php-mysql中工作

mysql - 如何将 TIME() 函数过滤的 mysql 查询转换为 laravel 查询生成器?