热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大神求助啊帮忙解决下sqlserver中一个棘手的问题

假设我有一张源表customer_account中有一个字段crm_id_content,字段的内容大概为这种模式<r><uid{F7898717-4954-E123
假设我有一张源表 customer_account中有一个字段 crm_id_content ,字段的内容大概为这种模式


现在的要求是将整个字段中的 id ,也就是“F7898717-4954-E123-A3C8-3C4A67E86D2E”  和 “A27BFB89-5F20-E451-A8BB-3C4A92E86D2E”这两个字符串取出来,插入到目标表customer_account_mubiao中的crm_customer_id字段中,id与id中间用“;”隔开,当然,源表的源字段中的id是不固定的,有些是有两个id,有些是3个id,有些事1个id,但是id的长度都是固定的36位,求各位大神帮帮忙啊

3 个解决方案

#1



;WITH customer_account(crm_id_content) AS (
SELECT  '


SELECT tt.id FROM (
SELECT *,CONVERT(XML,crm_id_content) AS xml_crm_id_content FROM customer_account
) t
CROSS APPLY (SELECT b.value('@id','VARCHAR(100)') AS id FROM t.xml_crm_id_content.nodes('r/u') s(b)) tt

/*
id
{F7898717-4954-E123-A3C8-3C4A67E86D2E}
{A27BFB89-5F20-E451-A8BB-3C4A92E86D2E}
*/

#2




;WITH customer_account(crm_id_content) AS (
SELECT  N'


SELECT tt.id,tt.[name] FROM (
SELECT *,CONVERT(XML,crm_id_content) AS xml_crm_id_content FROM customer_account
) t
CROSS APPLY (SELECT b.value('@id','VARCHAR(100)') AS id,b.value('@n','NVARCHAR(500)') AS [name] FROM t.xml_crm_id_content.nodes('r/u') s(b)) tt

/*
id name
{F7898717-4954-E123-A3C8-3C4A67E86D2E} 招商银行南京分行
{A27BFB89-5F20-E451-A8BB-3C4A92E86D2E} 厦门银行
*/

#3


楼上的

思路大概就是用SQL做XML解析吧

推荐阅读
author-avatar
醒不睡睡不醒_269
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有